c++ - is_const<const int&>::value 为 false——为什么?

标签 c++ c++11

<分区>

为什么这个静态断言会触发?

static_assert(std::is_const<const int&>::value, "Pain");

同时获得句法(为什么实现会这样做)和语义推理(为什么他们会设计这种类型特征的接口(interface)来做到这一点)会很棒。

我知道可以通过调用 std::remove_reference 来获得预期的结果,但我不确定为什么需要这样做。

最佳答案

const int& 是对const int 的引用。所以引用本身不是 const

这有点令人困惑,所以我将用 const int* 进行类比。它是指向 const int 的指针。但是你可以修改它

const int a = 5, b = 7;
const int* ptr = &a;
ptr = &b; // pointer is modified

所以指针不是const。 (const 指针将改为 int* const)

关于c++ - is_const<const int&>::value 为 false——为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27654070/

相关文章:

java - 如何获取特定的类对象

c++ - 使用删除-删除范例将元素从一个 vector move 到另一个 vector

c++ - 模板参数的模板类型推导

c++ - Painter 在继承的 QOpenGLWidget 类上不活动

c++ - 使用 sscanf 读取格式化字符串数据

C++ 在不同平台上编译

c++ - 邻接矩阵的深度优先搜索

c++ - 如何使用多个排序键对列表进行排序

c++ - 错误 : "2 overloads have similar conversions"

c++ - C++中各种初始化程序之间的区别