У меня есть класс A, который имеет параметр шаблона T. Есть случаи использования, когда класс T предлагает функцию func1(), и есть случаи использования, когда T ее не предлагает. Функция f() в A должна вызывать func1(), если она существует. Я думаю, это должно быть возможно с помощью boost 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;
}
};