|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||
Зачем нужны rvalue ссылки, если есть универсальные ссылки09.01.2017, 17:41. Показов 12617. Ответов 29
Метки нет (Все метки)
Читаю книгу Скотта Мэйерса...
Что-то я совсем запутался с этими rvalue ссылками. Я не пойму, зачем нужны rvalue ссылки, если есть универсальные ссылки, который принимают на себя как rvalue, так и lvalue? Пример:
0
|
||||||
| 09.01.2017, 17:41 | |
|
Ответы с готовыми решениями:
29
Не понял в С++ зачем нужны ссылки в функциях и Перегрузку конструктора! Зачем нужны ссылки на методы? зачем нужны анонимус-функции? если есть {} и let |
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
| 09.01.2017, 18:03 | |
|
https://www.cyberforum.ru/blog... og826.html
http://stackoverflow.com/quest... d-prvalues Дело в том, что тип T и тип universalRef это разные вещи. Шаблон может раскрыться с другим типом. Вроде бы у Майерса как раз понятнее всех это объяснено.
0
|
|
|
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
|
|
| 09.01.2017, 18:05 | |
|
rvalue не тоже самое что универсальная ссылка. rvalue параметры в функциях явно указывают что переданный аргумент должен быть именно rvalue. Универсальная ссылка, напротив, может быть привязана как к rvalue так и к lvalue, а фактический параметр можно потом определить в теле функции с помощью
std::forward
0
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||
| 09.01.2017, 18:08 [ТС] | ||
|
MrGluck,
0
|
||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 09.01.2017, 18:10 | ||
|
0
|
||
|
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
|
||||||
| 09.01.2017, 18:44 | ||||||
Bretbas, заметьте еще что функция с универсальной ссылкой может принять что угодно поскольку это шаблон, а функция с rvalue принимает только определенно заданный тип. С функциями, принимающими универсальные ссылки, могут возникнуть проблемы перегрузки с другими "нормальными" функциями. Добавлено через 13 минут Могут еще возникнуть проблемы с масштабируемостью и эффективностью при перегрузках двух схожих по функционалу функций - одна принимает lvalue, а другая rlavue. Но это долго объяснять (лутше почитать: стр. 177 переведенной книги Мейерса). Добавлено через 5 минут Плюс еще тема для ознакомления с проблемами перегрузки с универсальными ссылками: [дизайн и эволюция] провалы в variadic конструкторы
0
|
||||||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||||
| 09.01.2017, 18:45 [ТС] | ||||||||
|
MrGluck,
notAll,
Но все равно спасибо
0
|
||||||||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||||||||
| 09.01.2017, 19:03 | ||||||||
0
|
||||||||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||||
| 09.01.2017, 19:41 [ТС] | ||||||||
|
MrGluck,
0
|
||||||||
|
Форумчанин
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|||||||
| 09.01.2017, 19:56 | |||||||
1
|
|||||||
|
Неэпический
|
||
| 09.01.2017, 20:10 | ||
|
Да даже у этого самого Майерса почитайте - он придумал термин для облегчения пояснения. Универсальная ссылка - это сочетание двух факторов. А именно, наличие rvalue-ссылки и вывода типа. А далее в дело идет сворачивание ссылки, при необходимости. Так что все эти универсальные ссылки невозможны без r/lvalue-ссылок, точнее, универсальные ссылки - это и есть r/lvalue-ссылки. Будет это rvalue-ссылка или lvalue-ссылка, зависит от выведенного из аргумента типа.
0
|
||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||||||
| 09.01.2017, 20:14 [ТС] | ||||||
|
MrGluck, Да можно сделать как угодно. У меня вопрос в другом. В чем разница этого всего?
Теперь у меня еще один вопрос назрел, зачем универсальные ссылки нужны, если обычные ссылки, такие как void foo( const T& value ) принимают как и rvalue, так и lvalue. Я совсем запутался.
0
|
||||||
|
Неэпический
|
||||||||||||||
| 09.01.2017, 20:20 | ||||||||||||||
|
Забудьте о всяких универсальных ссылках, разберитесь с базовыми вещами.
1
|
||||||||||||||
|
Любитель чаепитий
|
||||||
| 09.01.2017, 20:27 | ||||||
|
Кстати да, Croessmah прав, по идее и нет никаких универсальных ссылок, всё дело в свёртывании ссылок.
0
|
||||||
|
Неэпический
|
|
| 09.01.2017, 20:28 | |
|
Не знаю, может поможет:
Нюансы синтаксиса: где, как и для чего используется && Семантика перемещения и perfect forwarding(правильная передача) Что значат два амперсанда? Std::move
0
|
|
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
||
| 09.01.2017, 20:29 [ТС] | ||
|
Croessmah,
0
|
||
|
Каждому свое
533 / 219 / 81
Регистрация: 05.08.2013
Сообщений: 1,614
|
|
| 09.01.2017, 20:35 [ТС] | |
|
0
|
|
| 09.01.2017, 20:35 | |
|
Помогаю со студенческими работами здесь
20
Зачем нужны массивы, если есть обычные переменные? А зачем нужны веб программисты, если есть wordpress? Зачем нужны наборы в Evernote, если есть Блокноты?
Зачем нужны обычные массивы, если есть динамические? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|