Size: a a a

2020 March 25

ПК

Побитый Кирпич in pro.cxx
Pavel Zhigulin
Я вот пишу на плюсах давно, но до сих пор не уверен, что до конца понимаю эту часть плюсов. Есть какой-нибудь простой гайд с примерами по всем этим r-,l-,x-,pr-,gl-value?

Потому что я вот вообще не понимаю разницы между xvalue и lvalue например) Да и с rvalue такое чувство что есть пробелы.
lvalue - именованный объект, на который можно взять адрес
xvalue - в 99% результат std::move
prvalue - временный объект.

Вот грубое объяснение
источник

PK

Pavel Kazakov in pro.cxx
xvalue -- eXpiring value -- что-то, что скоро сдохнет нахрен,
prvalue -- PuRe value -- что-то, у чего нельзя адрес спросить, потому что имени нет
источник

PK

Pavel Kazakov in pro.cxx
glvalue -- обобщение
источник

P

Pepe 🐸 in pro.cxx
Pavel Zhigulin
Я вот пишу на плюсах давно, но до сих пор не уверен, что до конца понимаю эту часть плюсов. Есть какой-нибудь простой гайд с примерами по всем этим r-,l-,x-,pr-,gl-value?

Потому что я вот вообще не понимаю разницы между xvalue и lvalue например) Да и с rvalue такое чувство что есть пробелы.
на спп референс но он не очень простой и логика не очевидна если вообще есть
источник

PZ

Pavel Zhigulin in pro.cxx
Pavel Kazakov
у переменной внутри функции уже есть имя, и к ней можно обратиться -- это больше не prvalue, а xvalue
Тогда почему вот в этом ответе объект в функции xvalue, а не lvalue?
источник

P

Pepe 🐸 in pro.cxx
Pavel Zhigulin
Тогда почему вот в этом ответе объект в функции xvalue, а не lvalue?
объект л-, результат мува х-
источник

PK

Pavel Kazakov in pro.cxx
тут важна вот эта тонкая грань :) надо как-то начать понимать что будет expiring, а что нет
источник

PZ

Pavel Zhigulin in pro.cxx
Что значит "скоро сдохнет"?) Как понять насколько скоро?)
источник

PK

Pavel Kazakov in pro.cxx
как начать понимать -- не знаю, можно просто сесть с блокнотом и коллегой, и поделать примеры вслух
источник

P

Pepe 🐸 in pro.cxx
Pepe 🐸
объект л-, результат мува х-
а если в конце жизни то пр- да
источник

PZ

Pavel Zhigulin in pro.cxx
Pavel Kazakov
glvalue -- обобщение
Обобщение чего? ) X и L?
источник

PK

Pavel Kazakov in pro.cxx
Pavel Zhigulin
Что значит "скоро сдохнет"?) Как понять насколько скоро?)
ну тут просто английский: "a value to expire soon", никакого специального технического смысла
источник

PK

Pavel Kazakov in pro.cxx
Pavel Zhigulin
Обобщение чего? ) X и L?
угу
источник

P

Pepe 🐸 in pro.cxx
короче не очень понятно мягко говоря
источник

PK

Pavel Kazakov in pro.cxx
это не должно быть интуитивно понятно, по идее; по крайней мере, у меня такое впечатление сложилось: плюсы -- expert-friendly, к сожалению
источник

PZ

Pavel Zhigulin in pro.cxx
Pepe 🐸
объект л-, результат мува х-
Но move ведь ничего никуда не двигает. По сути это просто каст к Rvalue ссылке? Логически как бы да, он типа умер, физически же адрес у него есть и остаётся до конца lifetime
источник

P

Pepe 🐸 in pro.cxx
Pavel Zhigulin
Но move ведь ничего никуда не двигает. По сути это просто каст к Rvalue ссылке? Логически как бы да, он типа умер, физически же адрес у него есть и остаётся до конца lifetime
да, каст в х-value ссылке. Или каст к pr-value, который становится х-value, короче этот момент я не очень понял
источник

PZ

Pavel Zhigulin in pro.cxx
Я понимаю, что вся это история не про объекты, а про результат выражения
источник

PZ

Pavel Zhigulin in pro.cxx
Просто вот когда я пишу код, в каждом конкретном случае, мне визуально понятно, почему та или иная конструкция работает/не работает.

Но когда начинаются вот эти разговоры про RVO, каждый раз туплю и ниче непонятно)
источник

AT

Andrew Titov in pro.cxx
Pavel Zhigulin
Я понимаю, что вся это история не про объекты, а про результат выражения
Результат выражения является объектом. Категории касаются только самих выражений.
источник