Как выводятся универсальные ссылки/пересылающие ссылки при привязке к rvalue?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как выводятся универсальные ссылки/пересылающие ссылки при привязке к rvalue?

Сообщение Anonymous »

Что-то в универсальных ссылках меня очень смущает, я это знаю

Код: Выделить всё

T&& + lvalue => T&
T&& + rvalue => T&&
Затем я услышал, как Скотт Мейерс говорит: существует «специальное правило для универсальных ссылок», а именно:

Код: Выделить всё

T&& + rvalue => T (NOT T&&)
Поэтому я провел простой тест, думая, что это прояснит ситуацию.

Код: Выделить всё

int i = 32;
auto&& v = std::move(i); // assigning xvalue

// According to Scott: auto&& is URef
// And according to the "rule" v should get deduced to T
// VS2015 tells me this is int&& (NOT int)... huh???

auto&& x = int(8); // assigning prvalue
// same as above ... hmmm
Так чего же мне здесь не хватает... Мне действительно нужно это понять...

Когда URef выводится до T&& и когда оно выводится до T... Я был бы признателен за примеры, которые помогут прояснить ситуацию... спасибо

Примечание. Я уже искал, поэтому нашел похожие вопросы, но не нашел конкретного ответа на этот вопрос.

Подробнее здесь: https://stackoverflow.com/questions/378 ... g-to-an-rv
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»