Компилятор продолжает жаловаться. Я пытаюсь привязать lvalue к ссылке rvalue, но я не вижу, как это сделать. Я новичок в С++ 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
определяется как rvalue в перегрузке оператора? Почему он переинтерпретируется как lvalue?
Спасибо.