55 if (T* instance =
s_instance.load(std::memory_order_acquire))
59 if (
s_instance.load(std::memory_order_relaxed) ==
nullptr)
62 return *
s_instance.load(std::memory_order_relaxed);
67 s_instance.store(
new T, std::memory_order_release);
73 delete s_instance.exchange(
nullptr, std::memory_order_acq_rel);
static std::mutex s_mutex
static void FinalizeClass()
static std::vector< Entry > s_finalizers
static void FinalizeType(std::type_index type)
static void AddFinalizer(std::type_index type, FinalizerFunc finalize)
static std::mutex s_mutex
static std::atomic< T * > s_instance