在我的项目中,我有这样的功能:
bool VectorList::put(const Pair &p);
这通过复制Pair
将.VectorList
Pair
我可以这样使用它:
Pair p { "key", "value" };
VectorList v;
v.put(p);
// or
v.put(Pair{ "anotherkey", "anothervalue" });
但是在第二种情况下,创建了一个不必要的对象,所以我想做
bool VectorList::put(Pair &&p);
我检查了这是如何在向量(gcc,llvm)中完成的,两种方法中都有 100% 相同的代码,除了 equal / std::move() 行。
有没有什么方法可以在不重复代码的情况下做到这一点?
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;
}