Lvalue для rvalue ссылки привязки

Компилятор продолжает жаловаться, что я пытаюсь связать lvalue со ссылкой на rvalue, но не могу понять, как это сделать. Я новичок в C ++ 11, перемещаю семантику и т. Д., Поэтому, пожалуйста, потерпите меня.

У меня есть эта функция:

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

который вызывает этот метод:

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

Я продолжаю получать ошибки, подобные следующим:

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

на вызове Insert (). неkey определяется как значение в перегрузке оператора? Почему это интерпретируется как lvalue?

Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос