Следующее дает ошибку компилятора:
#include <string>
const std::string& get_name();
int main(){
auto&& name1 = get_name();//should bind to whatever
const auto& name2 = get_name();//also ok
const auto&& name3 = get_name();//<-not ok, why ?
return 0;
}
Ссылка на godbolt: https://godbolt.org/z/l6IQQ7
Если я использую const auto&
, он компилируется - но это не будет привязывать к значению. auto&&
будет привязан ко всему так, что, естественно, тоже работает. Однако какая логика const auto&&
не обязательна в этом случае? Я знаю, что auto&&
сохранит постоянство - но есть ли способ быть const
явным и в то же время быть независимым от ссылки / значения ?
Мотивация:
Для «нормальной работы программирования» внутри функций и т. Д. Было бы здорово иметь возможность сказать что-то вроде: «Мне все равно, если это значение или ссылка - но я не изменяюэто для остальной части функции ".
Это должно быть возможно с учетом текущего языка.
Смежный вопрос: Почему добавление` const` делаетуниверсальная ссылка как значение