¿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.

Respuestas a la pregunta(2)

Su respuesta a la pregunta