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.

Ответы на вопрос(5)

Ваш ответ на вопрос