considere este código simple e inútil.C++ functor y plantillas de funciones
#include <iostream>
struct A {
template<int N>
void test() {
std::cout << N << std::endl;
}
};
int main() {
A a;
a.test<1>();
}
Es un ejemplo muy simple de una plantilla de función. ¿Qué pasa si, sin embargo, quería reemplazar A::test
con un operator()
sobrecargado para que sea un functor?
#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?
}
Ciertamente, si la operator()
tomaron parámetros que dependían de la plantilla, el compilador podría deducir la plantilla. Pero simplemente no puedo encontrar la sintaxis adecuada para especificar los parámetros de la plantilla con un functor sin parámetros.
¿Hay una forma adecuada de hacerlo?
Obviamente, este código funcionaría, ya que no pasa por la sintaxis funtor:
a.operator()<1>();
pero que derrota un poco con el fin de que sea un funtor :-P.
+1: Sintaxis extraña para usar en la ofuscación de código. Debería mencionarse en http://thc.org/root/phun/unmaintain.html :-) –