|
1 / 1 / 0
Регистрация: 11.04.2012
Сообщений: 36
|
|||||||||||
Значения Lvalue и Rvalue14.08.2016, 14:01. Показов 1646. Ответов 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 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|