Yeah - since C++11 (I think), if a TU defers dynamic init of namespace-scope statics until first odr-use, that init is done exactly once in a thread-safe way. If you need hard guarantees, use function local static or std::call_once or make it constinit/constexpr