Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
techpriest
 Аватар для Mirmik
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180

Xvalue и prvalue

05.12.2015, 14:22. Показов 2896. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
А в чем, собственно, разница?

И вообще, есть какая-то разница между следующими функциями:
C++
1
2
int&& func();
int func();
cppreference утверждает, что xvalue имеют некое identity. Ага, думаю я. Раз у них есть это самое identity, то, вероятно, я могу взять. их адрес.

C++
1
2
3
4
int&& func(){return 5;};
 
main()
{&func();};
Облом. В чем, всё же сакральный смысл xvalue и int&& func();

Спасибо.

Добавлено через 12 минут
Хм... И вообще,
int&& func();
у меня всегда ноль вроде как возвращает. Что-то я где-то не разумею 0_о...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.12.2015, 14:22
Ответы с готовыми решениями:

Rvalue, lvalue, xvalue, prvalue, glvalue
Не в той теме начали обсуждать. Создам новую. то, что знаю я (выучил к собесед-ию), но глубокого понимания у меня нет: lvalue - если...

Lvalue, xvalue, glvalue, rvalue, prvalue
Для чего понадобилось такое разделение выражений lvalue, xvalue, glvalue, rvalue, prvalue. Для конкретной категории очень желательно...

Что же это такое glvalue, xvalue, prvalue
Ребята помогите мне разобраться с этими понятиями. Как известно, чтобы что-то понять самому, надо уметь об этом объяснить кому-то...

25
techpriest
 Аватар для Mirmik
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
05.12.2015, 19:39  [ТС]
Студворк — интернет-сервис помощи студентам
А, это так... глупость...

Попытка заставить локальный объект жить вне области видимости создавшей ее функции чуть дольше, чем до ближайшего ";".
Некромантия, в общем.

Вряд ли это вообще возможно.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
05.12.2015, 19:41
Цитата Сообщение от Mirmik Посмотреть сообщение
Хм... Мы, кажется немного не сошлись во мнении, адрес чего мы хотим получить всё же.
Я вот решил это так.
А адрес чего Вам нужен?
Я Вам показал взятие адреса функции, попытка чего была в 1-м посте.
Имя функции - это и будет адресом функции. Зачем еще что-то для этого придумывать.

Добавлено через 1 минуту
C++
1
2
3
4
int&& func(){return (int&&)5;}; //UB, но для краткости.
 
int main()
{func;};
0
techpriest
 Аватар для Mirmik
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
05.12.2015, 19:45  [ТС]
Так вот я и говорю, не договорились. Я то хотел адрес того объекта, который якобы имеет identity по терминологии cppreference. Короче, указатель на этот объект...

Добавлено через 1 минуту
В общем-то я даже не хотел его получить. Я просто таким способом проверил, правильно ли я понял то, что там написано.
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
05.12.2015, 21:13
Если я правильно понял, то та проверка правильности понимания - это такая своеобразная попытка забрать адрес объекта непосредственно внутри return, избегая всю работу функции. Попытка своеобразного goto, игнорирующего весь кусок блока кода функции.

Я могу сказать только то, что попытки взятия такого адреса ничего не дадут. Как можно взять адрес у уже уничтоженного объекта? Ответ - никак. Нельзя взять адрес у того, чего нет.
Функция вычислила выражение и переместила его. А такая попытка - это попытка взятия того адреса, откуда уже произошло перемещение. "Там уже разруха и хаос".

В стандарте ни о каких identity у xvalue не писано.
3.10 Lvalues and rvalues
An xvalue (an “eXpiring” value) also refers to an object, usually near the end of its lifetime (so that its resources may be moved, for example). An xvalue is the result of certain kinds of expressions involving rvalue references (8.3.2). [Example: The result of calling a function whose return type is an rvalue reference is an xvalue. —end example ]
Добавлено через 2 минуты
________________________________________ _____________
Если я ошибся, то пусть поправят. Я мог неправильно написать.|
________________________________________ _____________|
0
techpriest
 Аватар для Mirmik
634 / 213 / 57
Регистрация: 27.02.2014
Сообщений: 1,180
05.12.2015, 22:51  [ТС]
daslex
Ну, отчасти да... Впрочем, как вы понимаете, к моменту, когда я это писал, я только прощупывал почву и подобных тонкостей не понимал.

Интересно то, что адрес, вообще говоря, возвращается в любом случае (напоминаю, возврат ссылок (по умолчанию) производится путём возврата адреса). И его хитрыми средствами всегда можно получить и посмотреть, где этот самый объект лежит или лежал до недавнего времени. Будет ли это адрес на существующий объект или нет зависит только от того, в вызывающей, или же в вызываемой функции создан этот объект.

Так что адрес уничтоженного объекта получить можно.


P.S.
Я стандарт не читал... я все больше сайт cppreference смотрю. Простите.
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
22.04.2018, 00:42
Цитата Сообщение от Mirmik Посмотреть сообщение
cppreference утверждает, что xvalue имеют некое identity. Ага, думаю я. Раз у них есть это самое identity, то, вероятно, я могу взять. их адрес.
Цитата Сообщение от http://eel.is/c++draft/expr.unary.op#3
The result of the unary & operator is a pointer to its operand. The operand shall be an lvalue or a qualified-id.
123
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.04.2018, 00:42

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

Value categories. Является ли выражение xvalue?
Знакомлюсь с xvalue. Прочитал описание на cppreference. Согласно описанию, xvalue объект проще всего получить через std::move. ...

[xvalue][msvs/gcc][bug] member function with ref-qualifier
добрый вечер. следующий код работает как и ожидается. и прекрасно компиляется gcc: http://rextester.com/VASW79342 ...


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

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. Сразу отвечу: А в PvP с ним. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru