c++ - 必须仅使用 C++ 中的静态对象初始化 constexpr 引用吗?
问题描述
如果仅使用另一个对象constexpr
初始化引用,如示例中所示:constexpr
int main() {
constexpr int a = 0;
constexpr const int & b = a;
}
然后 GCC 和 Clang 都拒绝它说constexpr variable 'b' must be initialized by a constant expression, address of non-static constexpr variable 'a' may differ on each invocation of the enclosing function; add 'static' to give it a constant address
。
同时 MSVC 接受了这个例子。演示:https ://gcc.godbolt.org/z/Whv7YeWKW
所有编译器在添加static
到以下代码后都接受代码:
static constexpr int a = 0;
演示:https ://gcc.godbolt.org/z/abeP4z64E
标准是否真的要求constexpr
仅使用静态对象初始化任何引用?
解决方案
推荐阅读
- php - MySQL IN 子句与 OR 子句影响性能 - 为什么 OR 比 IN 快?
- python - Python 中的 LDA,我从 GitHub 获得了代码,但出现了一些错误,您可以在所附屏幕截图中看到错误
- python - 如何打印包含具有特定值python的列表的行
- javascript - 如何将音频文件从 express(node js)服务器发送到烧瓶服务器?
- css - 作为 CSS3 flex-box 用户,我想为给定的带有文本内容的 div 占用屏幕上的最大空间
- python - 名称“cPickle”未定义
- c# - 以与原生 windows 目录、C#、WPF 相同的速度加载和显示视频
- javascript - 为什么我的代码不等待回调
- python - 如何删除错误太多无法解包的值(预期 2)
- python - WebGL 丢失了上下文 | 硒蟒