Lvalue to rvalue Referenzbindung

Der Compiler beschwert sich immer wieder Ich versuche, einen Wert an eine R-Wert-Referenz zu binden, aber ich kann nicht sehen, wie. Ich bin neu in C ++ 11, bin neu in der Semantik usw., bitte nehmen Sie Kontakt mit mir auf.

Ich habe diese Funktion:

template <typename Key, typename Value, typename HashFunction, typename Equals>
Value& FastHash<Key, Value, HashFunction, Equals>::operator[](Key&& key)
{
    //  Some code here...

    Insert(key, Value()); // Compiler error here

    //   More code here.
}

welches diese Methode aufruft:

template <typename Key, typename Value, typename HashFunction, typename Equals>
void FastHash<Key, Value, HashFunction, Equals>::Insert(Key&& key, Value&& value)
{
    // ...
}

Ich erhalte immer wieder Fehler wie die folgenden:

cannot convert argument 1 from 'std::string' to 'std::string &&'

beim Aufruf von Insert (). Nichtkey definiert als ein Wert in der Operatorüberladung? Warum wird es als lWert neu interpretiert?

Vielen Dank.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage