Me pregunto. Me tocó un problema y aquí hay un pequeño repoduce. Esencialmente quiero reenviar todo. El problema es que usar el primer < < causará un error con o<<1
(o o<<SomeUserStruct()
. Si incluyo el segundo recibo errores acerca de que sea ambiguo. ¿Hay alguna forma de que pueda escribir este código para que use T&
cuando de lo contrario utiliza T
?reenviar una clase completa con un operador
#include <iostream>
struct FowardIt{
template<typename T> FowardIt& operator<<(T&t) { std::cout<<t; return *this; }
//template<typename T> FowardIt& operator<<(T t) { std::cout<<t; return *this; }
};
struct SomeUserStruct{};
int main() {
FowardIt o;
o << "Hello";
int i=1;
o << i;
o << 1;
o << SomeUserStruct();
}
Excelente respuesta. Sin embargo, si hago el método const, tengo que hacer la const de retorno también. Lo cual sería ilógico (para transmisiones regulares). –
@ acidzombie24: sí. ¡También agregué esto! – Nawaz
¿Tiene alguna idea de cuál es el problema con esto? http://www.ideone.com/fWVG4 hex funciona así que sabemos que las funciones están siendo avanzadas. Sin embargo, endl no es. –