为什么这个静态断言会触发?
static_assert(std::is_const<const int&>::value, "Pain");
获得一个语法(为什么实现会这样做)和一个语义推理(为什么他们会设计这种类型特征的界面来做这个)真是太棒了。
我知道可以投入std::remove_reference
来获得预期的结果,但我不确定为什么这是必要的。
答案 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
)