Por que <em vez de << na saída do fluxo ainda compila?

Hoje, cometi um pequeno erro de digitação no meu programa e fiquei pensando por que não estava obtendo nenhum resultado, embora o programa tenha sido compilado corretamente. Basicamente, reduz-se a isso:

#include <iostream>

int main()
{
    std::cout < "test"; // no << but <
}

Não tenho absolutamente nenhuma idéia de que tipo de conversão implícita é realizada aqui, portanto o programa ainda compila (g ++ 4.9.2 e até g ++ 5). Acabei de perceber que clang ++ rejeita o código. Existe uma conversão paravoid* sendo realizado (não consigo pensar em mais nada)? Lembro-me de ter visto algo assim, mas pensei que fosse abordado no g ++ 5, mas isso não parece ser o caso.

EDITAR: Eu não estava compilando com-std=c++11, portanto, o código era válido no período anterior ao C ++ 11 (devido à conversão emvoid* doostream) Ao compilar com-std=c++11 O g ++ 5 rejeita o código, o g ++ 4.9 ainda o aceita.

questionAnswers(2)

yourAnswerToTheQuestion