是POD吗?定义成constexpr如果可以编译通过可能保证不会有顺序问题。
不能定义成constexpr的类型一般来说要避免全局变量。
实在不行可以用全局函数来代替。像下面的代码不仅可以保证X和Y都是安全的全局变量,还能保证X在Y之前被初始化好。
=============================================================
const X& GetGlobalX() {
static const X* const instance = []() {
auto x = make_unique<X>();
// 初始化x的其它东西
return x.release();
}();
return *instance;
}
const Y& GetGlobalY() {
static const Y* const instance = []() {
auto y = make_unique<Y>(GetGlobalX());
// 初始化x的其它东西
return y.release();
}();
return *instance;
}
【 在 prc79 (PRC) 的大作中提到: 】
: 标 题: 能定义初始化顺序吗
: 发信站: 水木社区 (Tue Dec 22 08:20:56 2020), 站内
:
: 两个全局变量a,b
: 要求a在b之前完成初始化
: --
:
: ※ 来源:·水木社区
http://m.newsmth.net·[FROM: 106.121.8.*]
--
FROM 76.126.252.*