|
1 / 1 / 0
Регистрация: 11.04.2012
Сообщений: 36
|
|||||||||||
Значения Lvalue и Rvalue14.08.2016, 14:01. Показов 1691. Ответов 17
Метки нет (Все метки)
Здравствуйте.
В данной ссылке https://msdn.microsoft.com/ru-... 831hc.aspx приведен пример
Заранее, большое спасибо
0
|
|||||||||||
| 14.08.2016, 14:01 | |
|
Ответы с готовыми решениями:
17
C++ expressions - rvalue, glvalue, prvalue, xvalue, lvalue, а также rvalue reference: что есть что? |
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
| 14.08.2016, 14:46 | ||||||
|
lvalue - левостоящее
rvalue - правостоящее
0
|
||||||
| 14.08.2016, 17:15 | ||
|
hoggy, это достаточно мутная формулировка, причем она не работает во многих случаях.
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 14.08.2016, 17:24 | |
|
0
|
|
| 14.08.2016, 17:41 | ||||||||||||
ну или:
0
|
||||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 14.08.2016, 17:42 | ||
|
я просил случай, когда формулировка не работает.
0
|
||
| 14.08.2016, 17:43 | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 14.08.2016, 17:44 | |||||||
0
|
|||||||
| 14.08.2016, 17:47 | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 14.08.2016, 17:48 | |||||||
|
это разные понятия. с чего вообще вы взяли, что временный объект обязательно должен быть rvalue ?
0
|
|||||||
| 14.08.2016, 18:05 | ||||||||
0
|
||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 14.08.2016, 18:13 | ||||
|
то, что временные объекты на практике чаще всего тусят справа, ещё не делает их только rvalue. теперь почитайте, чем являются временные объекты.
0
|
||||
| 14.08.2016, 18:19 | ||||
![]() ![]() В стандарте написано, что названия lvalue и rvalue исторически сложились, а не то что lvalue - это то, что стоит слева.
0
|
||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||
| 14.08.2016, 19:07 | |||||
|
и что именно может выступать в качестве lvalue/pvalue в качестве lvalue может выступать любой объект. не важно, временный он, или нет. насколько сейчас противоречите здравому смыслу? вчитайтесь внимательно в строки стандарта:
в левой части выражения могут быть любые объекты. не важно: временные они там, или нет. в правой - только xvalue или временные. но сам по себе временный объект не обязан быть обязательно rvalue
0
|
|||||
| 14.08.2016, 19:28 | ||||||||||||
![]() Это вообще характеристики выражений. Просто так повелось и не более того. Кстати, для данного случая, Майерс привел более удачную формулировку, но и та не очень точная.
![]() И вообще что это значит? lvalue/rvalue относятся к выражениям, а не к объектам. Выражение в контексте создания временного объекта - rvalue. ![]() Итого, вся фраза, - "название исторически сложилось, потому что rvalue могли появляться с правой стороны в выражении присваивания". Но ведь с приходом C++11 виды выражений были расширены.
0
|
||||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||
| 14.08.2016, 20:15 | |||||
|
по вашему является "право стоящим" ? если вы считаете, что я ошибаюсь, тогда говорите в чем именно. и как оно на самом деле. моё понимание очень простое: gvalue - самые обычные (именованные) объекты rvalue - объекты, основной кейс которых - быть результатом выражения. "r" - от слова "rigth". потому исторически так сложилось, что в составе сложного выражения они находятся с правой стороны. в свою очередь, gvalue дополнительно подразделяется на lvalue и xvalue lvalue - самые обычные именованные объекты. "l" от слова "left" потому что их основной кейс в сложных выражениях - тусить с левой стороны. xvalue - это бывший gvalue, который принудительно привели к rvalue-reference то есть была обычная переменная. а мы взяли и при помощи std::move заставили компилятор думать, что объект - временный. rvalue обозначает как бы"временный объект, но как он образовался - не конкретизируется. в свою очередь подразделяется на prvalue и xvalue prvalue - это временные объекты (которые были рождены временными). xvalue - писал выше. вот и все понимание. все эти категории на самом деле нужны лишь для того, что бы конкретизировать контекст использования. можно ещё и так сказать: rvalue - это значение, выступающее в качестве результата выражения.
0
|
|||||
| 14.08.2016, 21:22 | ||||||||||
|
Уже перешел на "самопальные" выражения, т.к. по другому не понятно. А лево-право - лишь историческое наследие. lvalue - фактически, это именованные объекты, а также выражения, результатами которого является lvalue-reference (еще надо доработать по части функций). xvalue - ссылаются на объекты, которые вот-вот умрут (например, после выхода из функций), так же выражения с rvalue-reference являются xvalue. glvalue - включает в себя xvalue или lvalue (эдакая надкатегория, фактически, да - это "обычные" именованные объекты). rvalue - включает в себя xvalue, временные объекты, а также всё то, что не ассоциировано с объектами. prvalue - это выражения, которые rvalue, но не могут быть xvalue (например, литералы).
1
|
||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 14.08.2016, 21:39 | |
|
0
|
|
| 14.08.2016, 21:39 | |
|
Помогаю со студенческими работами здесь
18
RVALUE Ссылка, error: cannot bind non-const lvalue reference of type 'String&' to an rvalue of type 'String'| Rvalue и lvalue ссылки
Почему i++ это rvalue, а ++i lvalue? Непонятное поведение rvalue/lvalue Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера 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 с альфа-каналом (с прозрачным. . .
|