is_const <const int&=“”> :: value是false - 为什么?</const>

时间:2014-12-26 07:18:45

标签: c++ c++11

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

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

获得一个语法(为什么实现会这样做)和一个语义推理(为什么他们会设计这种类型特征的界面来做这个)真是太棒了。

我知道可以投入std::remove_reference来获得预期的结果,但我不确定为什么这是必要的。

1 个答案:

答案 0 :(得分:5)

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