<分区>
为什么这个静态断言会触发?
static_assert(std::is_const<const int&>::value, "Pain");
同时获得句法(为什么实现会这样做)和语义推理(为什么他们会设计这种类型特征的接口(interface)来做到这一点)会很棒。
我知道可以通过调用 std::remove_reference
来获得预期的结果,但我不确定为什么需要这样做。
<分区>
为什么这个静态断言会触发?
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/