В чем разница между const auto&&
и const auto&
в отношении ссылок на пересылку? Чем они отличаются по креплению?
Постоянная ссылка для пересылки и постоянная ссылка для ссылок для пересылки
comment
Технически правильной терминологией для универсальной ссылки является ссылка на пересылку, см. этот вопрос.
- person walnut   schedule 07.04.2020
Ответы (1)
В чем разница между const auto&& и const auto& в отношении универсальных ссылок?
Их разница в том, что const auto&&
— это ссылка rvalue на const, а const auto&
— ссылка lvalue на const. Их объединяет то, что ни один из них не является ссылкой для пересылки. Только auto&&
является ссылкой для пересылки (или T&&
, где выводится T
).
const auto&&
не привязывается к lvalue, в отличие от const auto&
и T&&
.
person
eerorika
schedule
07.04.2020
Есть ли какое-то преимущество у
const auto &
перед auto &&
?
- person nowi; 07.04.2020
@nowi По сути, тот факт, что это не ссылка для пересылки, является преимуществом, когда вы не хотите иметь ссылку для пересылки. Проверьте здесь для получения списка случаи, когда стандарт использует
const &&
. Это довольно неясно.
- person eerorika; 07.04.2020
Интересное замечание о
const &&
, я этого не знал, и это очень полезно, я могу использовать это сам. Но я полагаю, что спрашивал о const auto &
в своем комментарии и auto &&
, а не const auto &&
- person nowi; 07.04.2020
@nowi О, я не заметил :) Преимущество
auto &&
, конечно, в том, что вы можете использовать его для идеальной переадресации.
- person eerorika; 07.04.2020
так что тогда у
const auto &
нет преимущества?
- person nowi; 08.04.2020
@nowi О, я все еще неправильно понял / неправильно прочитал исходный комментарий: D
const auto &
выгодно, когда вы хотите быть уверены, что вы не в конечном итоге случайно измените упомянутый объект.
- person eerorika; 08.04.2020
Я понимаю. Под капотом такая же функция?
- person nowi; 08.04.2020
@nowi Ссылка - это просто косвенное указание. Они все одинаковые под капотом.
- person eerorika; 08.04.2020