Нет, это неправильное использование. Вы хотите использовать значение key
в качестве ссылки для пересылки, например:
template <typename T>
const Resource& operator[](T&& key) const;
Затем вы можете идеально пересылать key
. Это может сбивать с толку, но давайте посмотрим, почему это необходимо. Скажите Key = int
. Как operator[]
выглядит, когда мы создаем экземпляр шаблона?
const Resource& operator[](int&& key) const;
Обратите внимание, что здесь мы берем ссылку на r-значение, а не ссылку пересылки. Вам нужна ссылка на переадресацию, которая из-за вывода шаблона и сворачивания ссылок оценивается как правильный тип при создании экземпляра.
Однако в вашем примере значение идеальной пересылки теряется, поскольку у вас есть только один get
функция, которая принимает константную ссылку. В этом случае я не думаю, что что-либо, кроме ссылки на константу operator[]
, полезно.