template <typename T>
struct Base{
static T* getInstance(Handle handle);
};

class Drive : public Base<Drive>

その使い方ならアップキャストしなくていいだろうからCRTPでいいよね