diff --git a/folly/Singleton-inl.h b/folly/Singleton-inl.h index 33961f6b289fe00fe28baea09cc453dc91760d91..f06e003a5ecbca063763aa677ec4aff0c19b2b76 100644 --- a/folly/Singleton-inl.h +++ b/folly/Singleton-inl.h @@ -21,11 +21,14 @@ namespace detail { template <typename T> template <typename Tag, typename VaultTag> SingletonHolder<T>& SingletonHolder<T>::singleton() { + struct SingletonHolderImpl : SingletonHolder<T> { + SingletonHolderImpl() + : SingletonHolder<T>( + {typeid(T), typeid(Tag)}, + *SingletonVault::singleton<VaultTag>()) {} + }; /* library-local */ static auto entry = - createGlobal<SingletonHolder<T>, std::pair<Tag, VaultTag>>([]() { - return new SingletonHolder<T>( - {typeid(T), typeid(Tag)}, *SingletonVault::singleton<VaultTag>()); - }); + createGlobal<SingletonHolderImpl, void>(); return *entry; }