C++ constexpr指针可以指向哪些类型的对象?
cppreference.com说: 但我试图使C++ constexpr指针可以指向哪些类型的对象?,c++,pointers,constant-expression,C++,Pointers,Constant Expression,cppreference.com说: 但我试图使constexpr指针保持相同基类型的const对象的地址,但编译器给了我一个错误: const int a = 1; int main(){ constexpr int *b = &a; return 0; } 那么,一个constexpr指针可以指向什么类型呢?您的示例无法编译,因为“a”是一个“const int”,需要一个“constexpr const int”指针指向它 这里的问题不在于constexpr。如果你说 int
constexpr
指针保持相同基类型的const
对象的地址,但编译器给了我一个错误:
const int a = 1;
int main(){
constexpr int *b = &a;
return 0;
}
那么,一个
constexpr
指针可以指向什么类型呢?您的示例无法编译,因为“a”是一个“const int”,需要一个“constexpr const int”指针指向它 这里的问题不在于constexpr。如果你说
int *b = &a;
你会得到同样的错误。i、 e.“从常量int*到int*的转换无效”
我们可以通过将其设置为指向常量int的指针来解决这个问题
int const *b = &a;
现在我们可以添加constexpr,是的,constexpr确实意味着const
constexpr int const *b = &a;
其中b实际上是常数。这与以下内容完全相同
constexpr int const * const b = &a;
//^^^^^
// this const is made redundant by the constexpr.