Рассмотрим следующий фрагмент кода:
#include <iostream>
int main() {
std::string foo;
foo = -1; // why is the compiler not complaining about this?
std::cout << "1" << std::endl;
std::cout << foo << std::endl;
std::cout << "2" << std::endl;
}
Фактический вывод (оба режима ideone.com С++ 14 и GCC 4.8.4):
<no output>
Вопросы:
- Почему фрагмент кода вообще компилируется?
- Комментируя
foo = -1
, я получаю правильный stdout (1
и2
). Что компилятор, скомпилированный сfoo = -1;
, который приводит к сбою последующегоcout
?