是否可以声明变量extern constexpr
并在另一个文件中定义它?
我尝试了一下,但是编译器给出了错误:
声明constexpr
多变的 'i
' 不是一个定义
in .h:
extern constexpr int i;
in .cpp:
constexpr int i = 10;
不,你不能这样做。标准的内容如下(第 7.1.5 节):
1 constexpr 说明符仅适用于 a 的定义
变量或变量模板、函数的声明或
函数模板,或静态数据成员的声明
文字类型 (3.9)。如果有任何函数声明,函数
模板或变量模板有一个 constexpr 说明符,那么它的所有
声明应包含 constexpr 说明符。 [注:明确
专业化可能与模板声明不同
到 constexpr 说明符。函数参数不能声明
constexpr。 ——尾注]
标准给出的一些例子:
constexpr void square(int &x); // OK: declaration
constexpr int bufsz = 1024; // OK: definition
constexpr struct pixel { // error: pixel is a type
int x;
int y;
constexpr pixel(int); // OK: declaration
};
extern constexpr int memsz; // error: not a definition
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)