C ++ функтор и шаблоны функций
рассмотрим этот простой и бессмысленный код.
#include <iostream>
struct A {
template<int N>
void test() {
std::cout << N << std::endl;
}
};
int main() {
A a;
a.test<1>();
}
Это очень простой пример шаблона функции. Что, если, однако, я хотел заменитьA::test
с перегрузкойoperator()
сделать это функтором?
#include <iostream>
struct A {
template<int N>
void operator()() {
std::cout << N << std::endl;
}
};
int main() {
A a;
a<1>(); // <-- error, how do I do this?
}
Конечно, еслиoperator()
Принимая параметры, которые зависели от шаблона, компилятор мог вывести шаблон. Но я просто не могу понять правильный синтаксис для указания параметров шаблона с помощью функтора без параметров.
Есть ли правильный способ сделать это?
Очевидно, этот код будет работать, поскольку он обходит синтаксис функтора:
a.operator()<1>();
но это своего рода побеждает цель быть функтором :-P.