|
2 / 2 / 0
Регистрация: 22.09.2016
Сообщений: 24
|
||||||
C++ expressions - rvalue, glvalue, prvalue, xvalue, lvalue, а также rvalue reference: что есть что?10.08.2017, 21:55. Показов 3061. Ответов 13
Метки нет (Все метки)
Доброго времени суток, не понимаю до конца деление С++ - выражений (приложение 1). Lvalue вроде просто - всё, от чего можно брать адрес. А вот разницу между xvalue и prvalue до конца не понял, как определить, что есть что? Как следующий код из lvalue делает xvalue и почему это xvalue, а не prvalue?
Ещё вопрос, зачем нужно деление на rvalue и glvalue, только для спецификации языка? И почему от lvalue rhs типа rvalue reference можно брать адрес? Это разве не временный объект? Если я что-то напутал, прошу, объясните) Заранее спасибо
1
|
||||||
| 10.08.2017, 21:55 | |
|
Ответы с готовыми решениями:
13
Rvalue, lvalue, xvalue, prvalue, glvalue
Что же это такое glvalue, xvalue, prvalue |
|
Заблокирован
|
|||||||
| 10.08.2017, 22:18 | |||||||
static_cast к rvalue reference это xvalue.Вообще, я так понимаю, rvalue и lvalue — это историческое разделение. А разделение на 3 категории появилось в C++11. &wgt тип у wgt — Widget.
1
|
|||||||
|
2 / 2 / 0
Регистрация: 22.09.2016
Сообщений: 24
|
|||||||||
| 10.08.2017, 22:28 [ТС] | |||||||||
Спасибо за помощь
0
|
|||||||||
|
Неэпический
|
||||||||
| 10.08.2017, 22:32 | ||||||||
Тем более сами написали:
или, например, здесь: http://en.cppreference.com/w/c... e_category Добавлено через 1 минуту Это один из контекстов, где жизнь временного объекта продлевается до смерти ссылки.
1
|
||||||||
|
2 / 2 / 0
Регистрация: 22.09.2016
Сообщений: 24
|
|
| 10.08.2017, 22:32 [ТС] | |
|
Спасибо, подскажите, какой раздел стандарта?
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||||||||||||||||||
| 10.08.2017, 22:35 | ||||||||||||||||||||||||
|
например - результат функции, которая возвращает по значению.
но мы сказали компилятору, что нам он больше не нужен, и можно считать его временным.
временный объект - всегда безымянный объект. объект, у которого есть имя, уже не может быть временным. то бишь внутри вашего конструктора фигурирует ссылка на rvalue, но эта ссылка обозначает rvalue, а не prvalue. в вашем коде:
2
|
||||||||||||||||||||||||
|
Заблокирован
|
|||
| 10.08.2017, 22:40 | |||
|
На мой взгляд, проще исправить те 2 места, согласно которым тип выражения может быть ссылкой и убрать правило о преобразовании ссылки к не-ссылке. Тогда стандарт будет выглядеть более однообразным. И де-факто правило "у выражения никогда не бывает ссылочного типа" станет окончательно обоснованным. [1] http://en.cppreference.com/w/c... ialization
1
|
|||
|
2 / 2 / 0
Регистрация: 22.09.2016
Сообщений: 24
|
||||||
| 10.08.2017, 22:51 [ТС] | ||||||
Спасибо всем, стало попонятнее)
0
|
||||||
|
Заблокирован
|
||
| 10.08.2017, 22:54 | ||
|
1
|
||
|
2 / 2 / 0
Регистрация: 22.09.2016
Сообщений: 24
|
||||||
| 10.08.2017, 22:58 [ТС] | ||||||
0
|
||||||
| 10.08.2017, 23:00 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 22.09.2016
Сообщений: 24
|
|
| 10.08.2017, 23:03 [ТС] | |
|
*ссылочный объект) так, наверное, лучше. Просто у usual field не изменился
0
|
|
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
||||
| 22.04.2018, 00:48 | ||||
0
|
||||
| 22.04.2018, 00:48 | |
|
Помогаю со студенческими работами здесь
14
Нюансы синтаксиса и семантики: что такое rvalue и lvalue? Rvalue reference. Что происходит в коде? Rvalue и lvalue ссылки Непонятное поведение rvalue/lvalue Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|