Size: a a a

2020 March 25

P

Pepe 🐸 in pro.cxx
мучает вопрос, почему RVO не случается если мувнуть объект? Это же r-value все равно?
источник

AT

Andrew Titov in pro.cxx
Pepe 🐸
мучает вопрос, почему RVO не случается если мувнуть объект? Это же r-value все равно?
Ты про C++17, да?
источник

P

Pepe 🐸 in pro.cxx
Andrew Titov
Ты про C++17, да?
да
источник

AT

Andrew Titov in pro.cxx
(На всякий случай)
Можно пример кода, чтобы убедиться, что я правильно понял вопрос?
источник

P

Pepe 🐸 in pro.cxx
Andrew Titov
(На всякий случай)
Можно пример кода, чтобы убедиться, что я правильно понял вопрос?
напримео

MyClass foo() {
MyClass obj;
return move(obj);
}
источник

AT

Andrew Titov in pro.cxx
Понял.
источник

AT

Andrew Titov in pro.cxx
RVO в C++17 определено (или определена?) только для prvalue, а выражение std::move(...) является xvalue.

Ссылки для заинтересованных:
https://en.cppreference.com/w/cpp/language/copy_elision
https://en.cppreference.com/w/cpp/language/value_category
источник

P

Pepe 🐸 in pro.cxx
Andrew Titov
RVO в C++17 определено (или определена?) только для prvalue, а выражение std::move(...) является xvalue.

Ссылки для заинтересованных:
https://en.cppreference.com/w/cpp/language/copy_elision
https://en.cppreference.com/w/cpp/language/value_category
хм... может быть
источник

P

Pepe 🐸 in pro.cxx
точно похоже что это ответ, спасибо
источник

PK

Pavel Kazakov in pro.cxx
Pepe 🐸
напримео

MyClass foo() {
MyClass obj;
return move(obj);
}
это NRVO же
источник

S

Stas in pro.cxx
Это же убивает возможную оптимизацию.( из Мейерса инфа)
источник

PK

Pavel Kazakov in pro.cxx
Stas
Это же убивает возможную оптимизацию.( из Мейерса инфа)
clang должен про pessimizing move сказать, кстати, да
источник

ПК

Побитый Кирпич in pro.cxx
Pepe 🐸
мучает вопрос, почему RVO не случается если мувнуть объект? Это же r-value все равно?
Потому что rvo не про rvalue, а про prvalue
источник

P

Pepe 🐸 in pro.cxx
Побитый Кирпич
Потому что rvo не про rvalue, а про prvalue
да, я уже понял, спасибо.
источник

P

Pepe 🐸 in pro.cxx
Pavel Kazakov
это NRVO же
да, но я предполагал что мув должен RVO из этого сделать
источник

PK

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

PZ

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

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

ПК

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

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

PZ

Pavel Zhigulin in pro.cxx
Там все очень плохо
источник

ПК

Побитый Кирпич in pro.cxx
Там всё идеально написано
источник