Скажем, я хочу Си ++ для выполнения арифметических операций над двумя входами, рассматривая их в качестве данного типа:Передать указатель-в-шаблон-функцию в качестве аргумента функции?
псевдо:
function(var X,var Y,function OP)
{
if(something)
return OP<int>(X,Y);
else if(something else)
return OP<double>(X,Y);
else
return OP<string>(X,Y);
}
функции, которые соответствуют ОП могут быть как:
template <class T> add(var X,var Y)
{
return (T)X + (T)Y; //X, Y are of a type with overloaded operators
}
Итак, вопрос в том, как будет выглядеть подпись для функции? Если функции оператора не являются шаблонами, я могу это сделать, но я запутался в этой дополнительной сложности.
Посмотрите на аргументы шаблона шаблона. (И это не опечатка.) – sbi
+1, это в основном правильный ответ, как пройти OP. – MSalters
Я добавил это как ответ. Надеюсь, я не допустил никаких глупых ошибок. – sbi