Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
-47 / 3 / 0
Регистрация: 31.12.2017
Сообщений: 204

Ссылка на rvalue, является ли она сама rvalue?

08.02.2019, 00:12. Показов 4688. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
А верно ли, что ссылка на rvalue сама не является rvalue? Вот такой код является валидным:
C++
1
2
3
4
5
6
7
#include <iostream>
 
int main() 
{
    int&& r = 42;
    std::cout << &r << std::endl;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.02.2019, 00:12
Ответы с готовыми решениями:

C++ expressions - rvalue, glvalue, prvalue, xvalue, lvalue, а также rvalue reference: что есть что?
Доброго времени суток, не понимаю до конца деление С++ - выражений (приложение 1). Lvalue вроде просто - всё, от чего можно брать адрес. А...

Ссылка rvalue в конструкторе копирования и операторе присваивания
Здравствуйте. Решил попробовать ссылки rvalue в классе. Привожу часть: \\BinaryArray.h class BinaryArray { protected: ...

rvalue
добрый вечер. интересно ваше мнение. значит ли появление rvalue reference в новом стандарте то, что теперь локальным объектам зеленый свет....

24
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
08.02.2019, 15:12
Лучший ответ Сообщение было отмечено Jzx как решение

Решение

Студворк — интернет-сервис помощи студентам
Цитата Сообщение от rat0r Посмотреть сообщение
Можно ссылочку на формальное определение?
http://www.open-std.org/jtc1/s... /n4659.pdf
6.10 Lvalues and rvalues

Цитата Сообщение от Jzx Посмотреть сообщение
То есть в любой инструкции инициализации создаётся временный объект,
Если примитив (например число 42),
и у него никто не просит адреса, тогда нет ни одной причины, что бы создавать объект.
Компилятор просто сделает подстановку значения.

Цитата Сообщение от Jzx Посмотреть сообщение
Где я могу прочитать об этом?
В Московской библиотеке


Цитата Сообщение от Jzx Посмотреть сообщение
Есть ли здесь UB?
Нет ни UB, ни временных объектов
1
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
08.02.2019, 15:17
Цитата Сообщение от eva2326 Посмотреть сообщение
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4659.pdf
6.10 Lvalues and rvalues
Ну и где в https://timsong-cpp.github.io/... basic.lval написано, что value category это
Цитата Сообщение от eva2326 Посмотреть сообщение
категория доступа к объекту
???

prvalue, например, вообще никакого объекта не обозначает, чтобы к чему-то была "категория доступа". Лол.
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
08.02.2019, 16:05
Цитата Сообщение от rat0r Посмотреть сообщение
Ну и где
Первым же пунктом жеж))

Expressions are categorized according to the taxonomy in Figure [fig:categories].

expression
glvalue
rvalue
lvalue
xvalue
prvalue

Figure 1 — Expression category taxonomy
Специально для тех, кто в танке, там даже картинку нарисовали))
Но если даже с картинкой не понятно, ничем не могу помочь))
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
08.02.2019, 16:08
Цитата Сообщение от eva2326 Посмотреть сообщение
Первым же пунктом жеж
Этого:
Цитата Сообщение от eva2326 Посмотреть сообщение
Формально - категория доступа к объекту.
там нет :/
0
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
08.02.2019, 19:29
Лучший ответ Сообщение было отмечено Jzx как решение

Решение

Цитата Сообщение от Jzx Посмотреть сообщение
Непонятно, почему именно ... const reference.
Цитата Сообщение от http://eel.is/c++draft/dcl.init.ref#5.2
Otherwise, if the reference is an lvalue reference to a type that is not const-qualified or is volatile-qualified, the program is ill-formed.
[Example:
C++
1
2
3
double& rd2 = 2.0;              // error: not an lvalue and reference not const
int  i = 2;
double& rd3 = i;                // error: type mismatch and reference not const
— end example
 ]
Цитата Сообщение от Jzx Посмотреть сообщение
Есть ли здесь UB?
Нет.

Цитата Сообщение от Jzx Посмотреть сообщение
То есть в любой инструкции инициализации создаётся временный объект, значением которого инициализируется уже объект невременный?
Нет.

Цитата Сообщение от Jzx Посмотреть сообщение
Где я могу прочитать об этом?
Конкретно о случае топика здесь:
Цитата Сообщение от http://eel.is/c++draft/class.temporary#1
Temporary objects are created
(1.1)
when a prvalue is converted to an xvalue ([conv.rval]),
Цитата Сообщение от http://eel.is/c++draft/class.temporary#2
The materialization of a temporary object is generally delayed as long as possible in order to avoid creating unnecessary temporary objects.
[ Note: Temporary objects are materialized:
(2.1)
when binding a reference to a prvalue ([dcl.init.ref], [expr.type.conv], [expr.dynamic.cast], [expr.static.cast], [expr.const.cast], [expr.cast]),
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.02.2019, 19:29

Rvalue vector
Как это? vector&lt;int&amp;&amp;&gt; v = {0,0,0};// Это не скомпилируется (Вектор, якобы, хранит rvalue) vector&lt;int&gt; &amp;&amp;rval_vec = v;...

Ссылки от rvalue
Доброго времени суток, господа! Начал читать статью про rvalue ссылки на хабре и что-то много вопросов появилось, вот. void...

Rvalue reference
#include &lt;iostream&gt; std::string get_string() { return std::string(&quot;12345&quot;); } int main() { std::string const&amp; str =...

Rvalue ссылки
Литературу читаю, но доезжаю медленно(если знаете где доступно описано- напишите),тяжело болею умственной анорексией. 1.Так вот о...

Почему *(a+j) не rvalue?
Запись массива вида a - это lvalue и эквивалентна *(a+j), но почему *(a+j) не rvalue, потому что сумма a+j должна была бы быть rvalue, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru