У меня есть следующий код, определяющий шаблон Functor и функцию running_op, которая принимает массив, его длину и функтор для применения к списку:
template <class Type>
struct SumFunctor {
Type sum;
SumFunctor() : sum(0) {};
Type operator()(Type next) {
return sum += next;
}
};
template <class Container, class Functor>
inline Container running_op(Container& container, Functor functor) {
transform(container.begin(), container.end(), container.begin(), functor);
return container;
}
Это используется следующим образом:
list<float> a({1,1,1,1});
running_op(a, SumFunctor<float>());
То, что я хотел бы сделать, чтобы избежать ввода имени контейнера в экземпляре функтора, это использовать его следующим образом:
list<float> a({1,1,1,1});
running_op(a, SumFunctor);
Поскольку в нем содержитсяможно найти в шаблоне running_op с помощью Container :: value_type. Я хотел бы сделать что-то следующее (что не работает) для создания экземпляра функтора соответствующего типа:Я могу передать необработанный шаблон другому шаблону для последующего создания экземпляра?Есть ли специальное ключевое слово, которое я должен использовать, кроме класса в списке параметров шаблона (шаблон не работал в этом случае)?На самом деле я просто хочу передать символ, который является именем шаблона функтора;это возможно?