Здравствуйте, zaufi, Вы писали:
Z>Здравствуйте, rumia, Вы писали:
R>>Здравствуйте, Аноним, Вы писали:
А>>>Какой из них более правильный?
R>>http://liveworkspace.org/code/3Mun0g$0
R>>отсюда видно, что при использовании семантики перемещения поведение меняется в зависимости от
R>>содержимого функции. Поэтому я считаю, что первый вариант лучше.
Z>и что показывает данный пример?? а ничего! только лишь что компиляторы нынче несколько умнее человеков...
Z>как видно в примере, все что попадает в эти funcN вообще не используются! this участвующих объектов всегда тот, который был в main: т.е. никакой "передачи владения" в данном _тривиальном_ случае вообще не происходит. даже симуляция каких-то действий с переданным объектом (вызов foo()) не заставляет компилятор генерить бессмысленный код (вызывать move конструкторы), даже на -О0...
кстати, как можно видеть, добавления "симуляции использования" переданного объекта, придает твоему изначальному примеру "ожидаемое" поведение ("p3" таки не печатается)