Мне было интересно, есть ли какие-либо возможные преимущества использования ссылочного аргумента rvalue для индексации в объекте контейнера, в отличие от константной ссылки:
Foo::bar(T1&& i, T2&& x)
{
m_data[i].emplace_back(std::move(x));
}
Где m_data
- это std::unordered_map<T1, std::vector<T2>>
.Мне кажется более естественным, что i
относится к типу const T1&
, но я недостаточно знаю семантику перемещения, чтобы знать, имеет ли T1&&
какие-либо преимущества или нет (предположим, что T1 и T2 являются тяжелыми типами).
Редактировать: В моем случае T1 - это std::pair<enums, std::string>
, а T2 - shared_ptr для пользовательского класса.