95#ifndef G4TLSSINGLETON_HH
96#define G4TLSSINGLETON_HH 1
135 template <
typename FuncT>
136 static typename fvector_t::iterator
Insert(FuncT&& _func)
139 return GetCallbacks().emplace(GetCallbacks().end(),
140 std::forward<FuncT>(_func));
147 friend void G4AutoDelete::Register<T>(T*);
196 printf(
"Deleting G4ThreadLocalSingletons for type %s ...\n",
197 G4Demangle<T>().c_str());
213 if(instance ==
static_cast<T*
>(0))
226 instances.push_back(i);
232 if(instances.empty())
235 while(!instances.empty())
237 T* thisinst = instances.front();
238 instances.pop_front();
G4double(* function)(G4double)
#define G4MUTEXDESTROY(mutex)
#define G4MUTEXINIT(mutex)
void Put(const value_type &val) const
std::vector< std::function< void()> > fvector_t
static fvector_t::iterator Insert(FuncT &&_func)
G4ThreadLocalSingleton & operator=(G4ThreadLocalSingleton &&)=default
std::list< T * > instances
void Register(T *i) const
~G4ThreadLocalSingleton()
G4ThreadLocalSingleton(G4ThreadLocalSingleton &&)=default
G4ThreadLocalSingleton(const G4ThreadLocalSingleton &)=delete
G4ThreadLocalSingleton & operator=(const G4ThreadLocalSingleton &)=delete