C++17の質問です。
intとvectorを持つpairを構築したいのですが、
vectorは大きいことがあるのでムーブしたいです。
C++日本語リファレンスのpairのコンストラクタ
を見たところ、
引数が2つとも右辺値参照のものはあるのですが(上記サイトの(5))、
片方だけ右辺値参照のものはないようです。
そこで、以下のように両方右辺値参照にしないと
ムーブ構築が呼び出されないのではないかと考えました。
C++
1int x=1; 2std::vector<int> y{10, 20, 30}; 3std::pair<int, std::vector<int>> p{move(x), move(y)}; //両方右辺値参照にする
しかし、以下のようにvectorのみを右辺値参照にしても、
ムーブ構築されました。動作はVisual Studio 2019で行いました。
C++
1int x=1; 2std::vector<int> y{10, 20, 30}; 3std::pair<int, std::vector<int>> p{x, move(y)}; //vectorのみ右辺値参照にする
これはどのように解釈すればよいでしょうか。
また、このような目的の時の正しい書き方はどのようなものでしょうか。
よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/04 15:03