私はこれらのクラスを持っています:
class A{};
class B{};
class C : public A{};
class D : public A, public B{};
次のようなテンプレート関数を作成したいと思います。
template<typename T>
void f(T* arg);
そしてそれのために2つの専門分野を作るために:
- Tが継承を使用しない場合または単一の継承を使用する場合の1つ
- Tが多重継承を使用する場合の1つ
f_specialization1()
最初のケースであるとしましょうf_specialization2()
(私はちょっと同じ名前でなければならないことを知っています、これはちょうど便利な慣習です)。私はこの振る舞いが欲しい:
A a;
B b;
C c;
D d;
f(&a);//here f_specialization1 is called
f(&b);//here f_specialization1 is called
f(&c);//here f_specialization1 is called
f(&d);//here f_specialization2 is called
この動作を実現することは可能ですか?