是否可以声明constexpr指针而不是指向constexpr的指针?

时间:2019-05-20 10:34:46

标签: c++ c++11 constexpr

是否正确

ng build --prod --aot --build-optimizer

声明constexpr指针(而不是指向constexpr int的指针)?

此定义

constexpr int* p = nullptr;

出现编译错误。

1 个答案:

答案 0 :(得分:9)

该标准在[dcl.constexpr]/1中说,只有变量或函数(及其模板)可以是constexpr

  

constexpr说明符应仅应用于变量或变量模板的定义或函数或函数模板的声明。

特别是,constexpr不是类型系统的一部分(尽管它确实暗示着const),因此,指向constexpr的指针在C ++中不是有意义的概念。

将变量标记为constexpr的主要原因是使它们成为usable in constant expressions。但是,也可以使用在常量表达式中使用常量初始化程序初始化的引用和常量整数值。也许参考部分可以帮助您解决正在处理的任何问题?