类内静态成员初始化
In-class static member initialization
给定
struct X {};
constexpr auto x = X{};
struct S {
static constexpr auto& rx = x;
};
海湾合作委员会 4.8 说
错误:静态成员"S::rx"的非常量类内初始化无效
static constexpr auto& rx = x;
^
错误:(需要类外初始化)
错误:"S::rx"在声明时无法由非常量表达式初始化
我希望x
是一个常量表达式,适合于这种初始化。这是一个 gcc 错误吗?如果没有,这是怎么回事?
这是一个错误,似乎已经报告过。
您可以改为执行以下操作:
struct X {};
const auto x = X{};
struct S {
static constexpr auto& rx = x;
};
相关文章:
- C - 初始化静态成员的方法
- 如何在运行时使用静态成员函数初始化静态成员变量
- 如何在班级中声明和初始化静态成员
- 初始化静态成员使编译工作.但是为什么
- 使用作用域内生成的指针初始化静态成员
- 初始化静态成员类(用于信号处理程序)
- 可以通过成员初始化列表初始化静态成员变量
- 如何用功能指针作为参数初始化静态成员的模板
- 运行主后,是否可以初始化静态成员变量
- 在C++中初始化静态成员
- 必须初始化静态成员
- 初始化静态成员变量值的正确位置
- 初始化静态成员函数指向同名函数的指针
- 如何初始化静态成员变量"dynamically"?
- 如何用函数的结果初始化静态成员数组
- 是否可以动态初始化静态成员数组?
- 初始化静态成员时重声明错误
- 避免在初始化静态成员时使用new()
- LNK 2001:初始化静态成员时未解析的外部符号
- 如何在c++中重写=操作符时初始化静态成员