Код: Выделить всё
std::string bar(...)
{
std::string out;
if (...) return out; // default constructed (empty)
out = stuff(...);
return out;
}
Почему в этом примере этого не происходит?
Код: Выделить всё
std::string bar(...)
{
if (...) {
std::string const out;
return {};
} else {
std::string const out = stuff(...);
return out;
}
}
(Насколько это важно, меня интересует только C++17 и более поздние версии. Обратите внимание: я мог бы понять, если бы проблема была в const во втором примере, но NRVO, похоже, тоже не работает без нее.)
Подробнее здесь: https://stackoverflow.com/questions/798 ... -statement
Мобильная версия