以下给出了编译器错误:
#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;
}
神螺栓链接: https ://godbolt.org/z/l6IQQ7
如果我使用const auto&
它编译 - 但这不会绑定到值。
auto&&
将绑定到任何东西,这样自然也能正常工作。const auto&&
但是,在这种情况下不绑定背后的逻辑是什么?我知道auto&&
会保留 constness - 但是有没有一种方法可以const
明确并且同时是参考/价值不可知论?
动机:
对于函数内部的“正常编程工作”等,如果能够说类似的话会很棒:“我不在乎它是一个值还是一个引用 - 但我不会为函数的其余部分更改它”。
考虑到当前的语言,这应该是可能的。
相关问题: 为什么添加`const`会使通用引用成为右值