Изменения в операторе импорта python3

В C ++ 98 и C ++ 03 вы должны передать const& bar, а затем скопировать. В C ++ 0x вы должны передать bar, а затем сделать ход (при условии, что bar имеет конструктор перемещения).

#include <utility>

struct foo
{
    bar _b;

    foo(bar b) : _b(std::move(b)) {}
};

Если вы создаете foo с параметром lvalue, конструктор копирования будет вызываться для создания копии b, и эта копия будет перенесена в _b. Если вы построите foo с параметром rvalue, конструктор перемещения bar будет вызываться для перехода в b, а затем он будет снова перемещен в _b.

149
задан balki 29 August 2012 в 07:24
поделиться