N4713的报价:
使用静态方法动态初始化非局部变量V和W 储存期限如下:
如果V和W已下订单 在一次翻译中,初始化和V在W之前定义 单位,V的初始化在初始化之前排序 W。
线程存储持续时间的变量是否有类似的段落?在下面的代码中,V
的初始化是在初始化之前排序的
的W
中?
thread_local int V = 1;
thread_local int W = V;
已更新:
我要修改代码如下:
thread_local string V;
thread_local string W;
答案 0 :(得分:1)
从 6.7.2开始,线程存储持续时间[basic.stc.thread] :
具有线程存储持续时间的变量应在其第一次使用odr(6.2)之前初始化,如果已构造, 应该在线程退出时销毁。
这意味着V
在'W'之前初始化。