Valor de enlace para valorar el enlace

El compilador sigue quejándose de que estoy tratando de vincular un valor lvalue a una referencia rvalue, pero no puedo ver cómo. Soy nuevo en C ++ 11, muevo semántica, etc., así que, por favor, tengan paciencia conmigo.

Tengo esta función:

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.
}

que llama a este método:

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

Sigo recibiendo errores como los siguientes:

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

en la llamada Insert (). No eskey ¿Definido como un valor en la sobrecarga del operador? ¿Por qué se reinterpreta como un lvalor?

Gracias.

Respuestas a la pregunta(1)

Su respuesta a la pregunta