move-semantics

    14

    3答えて

    私は2つのベクトルを持ち、1つをもう一方のベクトルに移動するとします。v1 = std::move(v2);この後でもv2は使用可能な状態になりますか?

    7

    4答えて

    を移動する2つのコンストラクタを組み合わせて、自分のおもちゃのクラステンプレートの一つは、非常によく似て2つのコンストラクタを持っています? template<typename U> optional(U&& x) { construct(std::forward<U>(x)); }

    62

    3答えて

    私はあるクラスのオブジェクトのstd::vectorを持っていますA。クラスは自明ではなく、コピーコンストラクタとのコンストラクタが定義されています。 std::vector<A> myvec; 私がいっぱいアップした場合のベクトルをAオブジェクト(例えばmyvec.push_back(a)を使用して)で、ベクターは、ベクターの要素の新しいコピーをインスタンス化するために、コピーコンストラクタ

    32

    4答えて

    可能性の重複: Move semantics == custom swap function obsolete? これはstd::swapはC++ 11でどのように見えるかです: template<typename T> void swap(T& x, T& y) { T z = std::move(x); x = std::move(y); y = std::m

    0

    2答えて

    私が知っていることによると、左辺値を右辺値参照にバインドすることはできません。 そして第二に、左辺値の式は、この2つの文には、次のコードでarecorrect場合、私はトラブルに少しだという事実によって、それは住所-のオペレータによるプレフィックス、(&) することができ、認識です: #include<iostream> struct Foo { Foo(Foo&& other)

    5

    3答えて

    最新のC++標準に追加された新しい関数std :: move()についてちょっと不思議です。それについての記事を読み終え と関数の定義が namespace std { template <class T> inline typename remove_reference<T>::type&& move(T&& x) { return x;

    66

    2答えて

    私はちょうどstd::move()の論理を完全に理解していません。 まず、私はそれを見つけましたが、その構造の仕組みではなく、std::move()の使用方法に関する文書しかないようです。 私はテンプレートメンバーの機能を知っていますが、VS2010のstd::move()定義を調べると、それはまだ混乱しています。 std :: move()の定義は以下のとおりです。 template<class

    5

    1答えて

    暗黙的に変換オブジェクトを移動オーバーロードされた関数を呼び出すときにこのプログラムはclang++ test.cpp -std=c++0xを使用してコンパイルされません。 class A { public: A() {} A(const A&) {} A(A&&) {} A& operator = (const A&) { return *this;

    3

    1答えて

    C++ 11の移動セマンティクスでは、std::ifstreamとstd::ofstreamの使用が例外に関してより簡単にまたは安全になりましたか?私はそれが標準ライブラリにも依存すると思う。 GCC、ICC、VC++コンパイラ間の違いはありますか?

    11

    2答えて

    は、次のことを考えてみましょう: struct X { Y y_; X(const Y & y) :y_(y) {} X(Y && y) :y_(std::move(y)) {} }; は、移動セマンティクスを最大限に活用するために、第2の1のようなコンストラクタを定義することが必要ですか?あるいは、適切な状況で自動的に世話をするでしょうか?