请问C++课本中的一句话,设置一个类型为auto的引用时,初始值的顶层常量属性仍然保留。和往常一样
请问C++课本中的一句话,设置一个类型为auto的引用时,初始值的顶层常量属性仍然保留。和往常一样,如果我们给初始值绑定一个引用,则此时的常量就不是顶层常量了。这是怎么意...
请问C++课本中的一句话,设置一个类型为auto的引用时,初始值的顶层常量属性仍然保留。和往常一样,如果我们给初始值绑定一个引用,则此时的常量就不是顶层常量了。 这是怎么意思,前后两句似乎矛盾
展开
1个回答
展开全部
这翻译真难看懂……原因之一大概是强行把const译成“常量”。不过不管怎么说,英文书大概远比这易懂……
嘛,以上是无关的吐槽。相比于自然语言,代码更能反映意思
const int x = 1;
auto& y = x; // y的类型是const int&
另一个就是不存在const引用
auto &const z = y; //不可能
如果对type traits有一点了解的话,还可以写出如下断言
static_assert(std::is_same<decltype(y),const int&>::value);
static_assert(false == std::is_const<decltype(y)>::value);
嘛,以上是无关的吐槽。相比于自然语言,代码更能反映意思
const int x = 1;
auto& y = x; // y的类型是const int&
另一个就是不存在const引用
auto &const z = y; //不可能
如果对type traits有一点了解的话,还可以写出如下断言
static_assert(std::is_same<decltype(y),const int&>::value);
static_assert(false == std::is_const<decltype(y)>::value);
更多追问追答
追问
多谢您的回答,不过还是只看懂了一半,第二句是说给初始值绑定一个引用,你的举例就是y,他说此时的常量就不是顶层常量了那您的第三句auto &const z=y;这是为了表明什么呢
追答
引用不可能具有top-level cv-qualifier。然而在下并不指望这句话能被轻易理解……
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询