9

move コンストラクターの仕様とMessage コンストラクターのソースを確認しましたが、見つかりませんでした。

ない場合、追加する計画について知っている人はいますか?

私はproto3構文を使用し、ライブラリを作成し、値を介したリターンとunique_ptrの間を検討しています。

4

3 に答える 3

9
  1. 代入演算子を使用しようとすると、RVO は余分なコピーを防ぐために最適化を行います。

    // RVO will bring the return value to a without using copy constructor.
    SomeMessage a = SomeFooWithMessageReturned();
    
  2. std::move左辺値をリスト/サブメッセージなどに移動するために使用する場合は、ConcreteMessage::Swapメソッドを使用してみてください。交換したアイテムは役に立たなくなります。

    // Non-copy usage.
    somemessage.add_somerepeated_message()->Swap(&a);
    somemessage.mutable_somesinglar_message()->Swap(&a);
    // With message copying
    somemessage.add_somerepeated_message()->CopyFrom(a);
    *somemessage.mutable_somesinglar_message() = a;
    
于 2015-10-27T10:44:22.750 に答える