Я пытаюсь узнать о boost mpl, и мне было интересно, возможно ли что-то подобное. В частности, возможно ли условно typedef функцию, основанную на параметре шаблона? Что-то вдоль линий этого игрушечного например:Условный typedef функции
template<typename arg1, typename arg2, typename rtype>
rtype getValue()
{
typedef boost::conditional<
// typedef boost::mpl::if_<
boost::is_same<rtype, double>,
double multiply(double a, double b),
int multiply(int a, int b)
> function;
function test;
return test(arg1::value, arg2::value);
}
Я попытался выше код и получил ошибку, что «аргумент шаблона 2 недействителен». Поэтому мне было интересно, есть ли способ превратить определение функции в допустимый тип, поскольку он является допустимым typedef?
Я также знаю, что есть много других способов сделать это. Я не хочу работать, потому что это попытка учиться.
Вам не хватает запятой после is_same <>? – lorro
@lorro Я, код, который я пытаюсь скомпилировать, к сожалению. – joshu