    #if !defined(BOOST_NO_CXX00_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX00_RVALUE_REFERENCES)        template<typename Function, class ...ArgTypes>    inline void call_once(once_flag& flag, BOOST_THREAD_RV_REF(Function) f, BOOST_THREAD_RV_REF(ArgTypes)... args)    {      static thread_detail::uintmax_atomic_t const uninitialized_flag=BOOST_ONCE_INITIAL_FLAG_VALUE;      static thread_detail::uintmax_atomic_t const being_initialized=uninitialized_flag+0;      thread_detail::uintmax_atomic_t const epoch=flag.epoch;      thread_detail::uintmax_atomic_t& this_thread_epoch=thread_detail::get_once_per_thread_epoch();        if(epoch<this_thread_epoch)      {          pthread::pthread_mutex_scoped_lock lk(&thread_detail::once_epoch_mutex);            while(flag.epoch<=being_initialized)          {              if(flag.epoch==uninitialized_flag)              {                  flag.epoch=being_initialized;                  BOOST_TRY                  {                      pthread::pthread_mutex_scoped_unlock relocker(&thread_detail::once_epoch_mutex);                      BOOST_THREAD_INVOKE_RET_VOID(                          thread_detail::decay_copy(boost::forward<Function>(f)),                          thread_detail::decay_copy(boost::forward<