Сегодня я сделал небольшую опечатку в своей программе и блуждал, почему я не получал никакого результата, хотя программа скомпилирована. В основном это сводится к следующему:
#include <iostream>
int main()
{
std::cout < "test"; // no << but <
}
Я абсолютно не знаю, какое именно неявное преобразование выполняется здесь, поэтому программа все еще компилируется (как g++ 4.9.2, так и даже g++ 5). Я просто понял, что clang++ отклоняет код. Происходит ли преобразование в void*
(не может думать ни о чем другом)? Я помню, что видел что-то подобное, но я думал, что это было рассмотрено в g++ 5, но это, похоже, не так.
EDIT: Я не компилировал с -std=c++11
, поэтому код был действителен в pre-С++ 11 (из-за преобразования в void*
из ostream
). Когда компиляция с -std=c++11
g++ 5 отклоняет код, g++ 4.9 все еще принимает его.