Свертывание ссылок для локальных переменных

В шаблоне функции, параметризованном на Tтип T&& может быть или не быть ссылкой на rvalue, в зависимости от категории значения аргумента:

template <typename T>
void function(T&& x)
{
    // ...
}

std::string some_named_string;
function(some_named_string);       // T&& is std::string&

function(std::string("hello"));    // T&& is std::string&&

Применимо ли это правило и к локальным переменным, где тип автоматически выводится?

auto&& x = some_named_string;      // is x a std::string& here?
auto&& y = std::string("hello");   // is y a std::string&& here?

1 ответ

Решение

Да. auto точно указывается в качестве вывода аргумента шаблона.

Другие вопросы по тегам