El siguiente fragmento de código funciona para mí:plantillas miembro de función y operador de sobrecarga() en C++
class Foo {
public:
template <class T> T& get() { ... }
};
Foo foo;
foo.get<int>() = ...;
Sin embargo, el siguiente fragmento de código no funciona para mí:
class Foo {
public:
template <class T> T& operator()() { ... }
};
Foo foo;
foo<int>() = ...;
Los errores siendo:
expected primary-expression before '>' token
expected primary expression before ')' token
Ambos errores se refieren a la foo<int>()
¿Por qué esto no funciona y es posible solucionarlo?
Su plantilla 'operator()' es bastante inutilizable, ya que sus instancias se sobrecargarían solo con el valor de retorno. Sigue usando el nombre 'get' o similar. – aschepler
No es inutilizable (aunque puede no ser preferible). Vea las respuestas a continuación. –
¿Por qué estás templaizando las funciones pero no la clase como un todo? –