Это местное rvalue?C++

Программы на C++. Форум разработчиков
Anonymous
Это местное rvalue?

Сообщение Anonymous »

Herb Sutter в своем блоге упомянул, что начиная с C ++ 23 категория ошибок была исключена, а именно возврат ссылки на локацию с функции. Он дает ссылку на Godbolt: < /p>
int& bad_bunny() {
int local = 42;
return local;
}
< /code>
Компилятор GCC дает ошибку: < /p>

Ошибка: не может привязать неконфессиональную ссылку на LVALUE типа 'int &' rvalue of type 'int' < /p>
< /blockquote>
это говорит о том, что это так, что устроит? Это не rvalue, просто локальный. < /P>
clang и msvc имеют ошибки: < /p>
clang: < /p>

Ошибка: неконфессиональная ссылка на тип 'int' не может быть связан с временным типом /> msvc: < /p>

Предупреждение C4172: возвращающийся адрес локальной переменной или временный: локальный < /p>
< /blockquote>
Интересно, что MSVC дает предупреждение, но все же компилирует его. C ++ 23 не должен это скомпилировать? MSVC не соответствует стандарту C ++ 23?

Подробнее здесь: https://stackoverflow.com/questions/795 ... -an-rvalue

Вернуться в «C++»