In my project I have function like this:
bool VectorList::put(const Pair &p);
This adds the Pair into the VectorList by copying the Pair.
I can use it like this:
Pair p { "key", "value" };
VectorList v;
v.put(p);
// or
v.put(Pair{ "anotherkey", "anothervalue" });
However in second case an unnecessary object is created, so I want to do
bool VectorList::put(Pair &&p);
I checked how this is done in vector (gcc, llvm) and there is 100% same code in both methods, except equal / std::move() line.
Is there some way I could do it without code duplication?
put() looks similar to this:
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;
}
 
     
     
    