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
Это местное rvalue? ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Почему std::array
::operator[] не возвращает ссылку rvalue для объекта rvalue?
Anonymous » » в форуме C++ - 0 Ответы
- 44 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему не основан на диапазоне для модификатора RVALUE-reference Match Match-RVALUE?
Anonymous » » в форуме C++ - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему не основан на диапазоне для модификатора RVALUE-reference Match Match-RVALUE?
Anonymous » » в форуме C++ - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Почему не основан на диапазоне для модификатора RVALUE-reference Match Match-RVALUE?
Anonymous » » в форуме C++ - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-