¿Por qué <en lugar de << en la salida de la secuencia todavía se compila?
Hoy hice un pequeño error tipográfico en mi programa, y me preguntaba por qué no obtenía ningún resultado, aunque el programa se compiló bien. Básicamente se reduce a esto:
#include <iostream>
int main()
{
std::cout < "test"; // no << but <
}
No tengo ni idea de qué tipo de conversión implícita se realiza aquí, por lo que el programa aún se compila (tanto g ++ 4.9.2 como incluso g ++ 5). Me acabo de dar cuenta de que clang ++ rechaza el código. ¿Hay una conversión avoid*
siendo realizado (no se me ocurre nada más)? Recuerdo haber visto algo como esto, pero pensé que se abordó en g ++ 5, pero este no parece ser el caso.
EDITAR: No estaba compilando con-std=c++11
, por lo que el código era válido en versiones anteriores a C ++ 11 (debido a la conversión avoid*
deostream
) Al compilar con-std=c++11
g ++ 5 rechaza el código, g ++ 4.9 aún lo acepta.