Re[6]: КОгда выбирается move-constructor?
От: jazzer Россия Skype: enerjazzer
Дата: 14.07.17 11:23
Оценка:
Здравствуйте, prezident.mira, Вы писали:

PM>Но тип возвращаемого значения функции и тип [под]выражения, состоящего из вызова этой функции — это не одно и то же!!!


Хотелось бы увидеть обоснование этому утверждению.

PM>http://eel.is/c++draft/expr#5

PM>If an expression initially has the type “reference to T” ([dcl.ref], [dcl.init.ref]), the type is adjusted to T prior to any further analysis.

Это к чему?

PM>AST dump можно посмотреть онлайн https://godbolt.org/g/mAbnmj.

PM>Про object написано: 'class TOnlyMovable' lvalue.
PM>Про std::move(object): 'class TOnlyMovable' xvalue

Это детали реализации конкретного компилятора, не более того.

J>>Вот вижу такое на http://en.cppreference.com/w/cpp/language/value_category:

PM>А я вот вижу там такое: Each expression has some non-reference type.

хз что это должно означать, если честно.

J>>

J>>Even if the variable's type is rvalue reference, the expression consisting of its name is an lvalue expression

J>>может и наврали, конечно.
PM>Нет, не наврали.

J>>А если не наврали, то получается, что object — это lvalue типа TOnlyMovable&&, а std::move(object) это xvalue того же самого типа TOnlyMovable&&.

PM>Только типа TOnlyMovable

объясни тогда, плиз, единички вот здесь: https://ideone.com/BLvcmc
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.