C++ C++;模板中的静态常量初始化顺序

C++ C++;模板中的静态常量初始化顺序,c++,static,initialization,c++14,constants,C++,Static,Initialization,C++14,Constants,冒着被标记为复制的风险,我冒险。 考虑以下事项: 给定以下静态常量数组arrA和arrB,arrB取决于arrA #包括 #包括 #包括但不提及是否存在允许以有序方式执行此类初始化的已知模式。在保持静态常量时,这是否可能 理想情况下,我希望数组保持常量,否则问题很小 虽然这个示例可以使用constexpr构建,但在实际情况中,需要动态初始化(我使用) 编辑:我发现有趣的是,无论源代码中声明或定义的顺序如何,arrB都在arrA之前进行初始化。如果要保证初始化的顺序,必须将两个数组包装在一个结构中

冒着被标记为复制的风险,我冒险。 考虑以下事项:

给定以下静态常量数组arrA和arrB,arrB取决于arrA

#包括
#包括
#包括但不提及是否存在允许以有序方式执行此类初始化的已知模式。在保持
静态常量时,这是否可能

理想情况下,我希望数组保持常量,否则问题很小

虽然这个示例可以使用
constexpr
构建,但在实际情况中,需要动态初始化(我使用


编辑:我发现有趣的是,无论源代码中声明或定义的顺序如何,
arrB
都在
arrA

之前进行初始化。如果要保证初始化的顺序,必须将两个数组包装在一个结构中,并使用结构的构造函数初始化静态变量。这就是我的意思的一个例子

#包括
模板
结构A{
结构B{
B():c(0),d(c+1){}
tc;
td;
};
静态B;
静态测试与控制(){
返回b.c;
}
静态T&d(){
返回b.d;
}
};
模板
类型名A::B A::B{};
int main(){

std::cout仍然有办法将静态变量包装到函数中(惰性初始化)。