Рассмотрим этот код:
std::unordered_map<int, std::string> data;
data[5] = foo();
В каком порядке обрабатываются data[5] и foo()? Если foo() бросает исключение, является 5 пункт в data создается или нет?
Если поведение зависит от версии C++, как отличаются эти версии?