jrtc27 added a comment. Seems you're right, the C++11 standard does clearly say (9.7p4):
> Dynamic initialization of a block-scope variable with static storage duration > (6.6.4.1) or thread storage duration (6.6.4.2) is performed the first time > control passes through its declaration; such a variable is considered > initialized upon the completion of its initialization. If the initialization > exits by throwing an exception, the initialization is not complete, so it > will be tried again the next time control enters the declaration. If control > enters the declaration concurrently while the variable is being initialized, > the concurrent execution shall wait for completion of the initialization. If > control re-enters the declaration recursively while the variable is being > initialized, the behavior is undefined. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D128726/new/ https://reviews.llvm.org/D128726 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits