私のプロジェクトでは、次のような機能があります。
bool VectorList::put(const Pair &p);
これにより、がコピーされて に追加Pair
されます。VectorList
Pair
次のように使用できます。
Pair p { "key", "value" };
VectorList v;
v.put(p);
// or
v.put(Pair{ "anotherkey", "anothervalue" });
ただし、2番目のケースでは不要なオブジェクトが作成されるため、やりたい
bool VectorList::put(Pair &&p);
これがベクター(gcc、llvm)でどのように行われるかを確認しましたが、 equal / std::move() 行を除いて、両方のメソッドに100%同じコードがあります。
コードを複製せずにそれを行う方法はありますか?
put()
これに似ています:
struct Node{
Pair pair;
AdditionalThings at;
};
bool VectorList::put(const Pair &p){
if (not_good_for_insert(p))
return false;
// ...
Node node = create_node();
node.pair = p;
// ...
return true;
}