テンプレート パラメーター T を持つクラス A があります。クラス T が関数 func1() を提供するユース ケースと、T が提供しないユース ケースがあります。A の関数 f() は、存在する場合、func1() を呼び出す必要があります。これはブースト mpl で可能だと思いますが、方法がわかりません。ここにいくつかの擬似コードがあります:
template<class T>
class A
{
void f(T param)
{
if(T::func1 is an existing function)
param.func1();
}
};
さらに良いのは、else-case です。
template<class T>
class A
{
void f(T param)
{
if(T::func1 is an existing function)
param.func1();
else
cout << "func1 doesn't exist" << endl;
}
};