Почему <вместо << в потоке вывод по-прежнему компилируется?

Сегодня я сделал небольшую опечатку в своей программе и странствовал, почему я не получил никакого вывода, хотя программа компилировалась нормально. В основном это сводится к этому:

#include <iostream>

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

Я абсолютно не представляю, какое неявное преобразование здесь выполняется, поэтому программа все еще компилируется (как g ++ 4.9.2, так и даже g ++ 5). Я только что понял, что Clang ++ отклоняет код. Есть ли преобразование вvoid* выполняется (не может думать ни о чем другом)? Я помню, что видел что-то подобное, но я думал, что это было решено в g ++ 5, но, похоже, это не так.

РЕДАКТИРОВАТЬ: Я не собирался с-std=c++11таким образом, код был действителен до C ++ 11 (из-за преобразования вvoid* изostream). При компиляции с-std=c++11 g ++ 5 отклоняет код, g ++ 4.9 по-прежнему принимает его.

Ответы на вопрос(2)

Ваш ответ на вопрос