40template <
typename Tp,
typename Tag,
typename PtrT,
typename PairT>
44 static auto _master = std::make_shared<Tp>();
45 static std::atomic<int64_t> _count{ 0 };
46 static thread_local auto _inst =
47 PairT{ _master, PtrT{ (_count++ == 0) ?
nullptr :
new Tp{} } };
53template <
typename Tp,
typename Tag,
typename PtrT,
typename PairT>
57 static thread_local auto& _pinst = get_shared_ptr_pair<Tp, Tag>();
58 static thread_local auto& _inst = _pinst.second ? _pinst.second : _pinst.first;
64template <
typename Tp,
typename Tag,
typename PtrT,
typename PairT>
68 static auto& _pinst = get_shared_ptr_pair<Tp, Tag>();
69 static auto _inst = _pinst.first;
75template <
typename Tp,
typename Tag,
typename PtrT>
79 static auto _instance = std::make_shared<Tp>();
Include the macros for hash.
PtrT get_shared_ptr_pair_main_instance()
PtrT get_shared_ptr_pair_instance()
PairT & get_shared_ptr_pair()
PtrT get_shared_ptr_lone_instance()