【发布时间】:2022-10-18 22:38:30
【问题描述】:
我正在使用here 列出的书籍了解constexpr 变量。特别是我在 C++ Primer 中读到:
声明为
constexpr的变量是隐式 const 并且必须使用常量表达式进行初始化。现在,为了进一步理清我的概念并检查我是否理解正确,我编写了以下简单的程序,该程序使用 msvc 但不使用 gcc 和 clang 编译: Demo
int main(void) { int i = 0; constexpr int *ptr= &i; //compiles with msvc but not with clang and gcc }所以,我的问题是哪个编译器在这里(如果有的话)?
【问题讨论】:
-
看起来格式不正确。
-
AFAIK 只有指向具有静态存储的变量的指针才能是常量表达式。细节在这里:en.cppreference.com/w/cpp/language/constant_expression
-
引用的定义清楚地表明 MSVC 是错误的。
标签: c++ pointers reference language-lawyer constexpr