named_creation_functor.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 69 行

HPP
69
字号
////////////////////////////////////////////////////////////////////////////////// (C) Copyright Ion Gaztanaga 2007-2008. Distributed under the Boost// Software License, Version 1.0. (See accompanying file// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)//// See http://www.boost.org/libs/interprocess for documentation.////////////////////////////////////////////////////////////////////////////////#ifndef BOOST_INTERPROCESS_SYNC_NAMED_CREATION_FUNCTOR_HPP#define BOOST_INTERPROCESS_SYNC_NAMED_CREATION_FUNCTOR_HPP#include <boost/interprocess/creation_tags.hpp>#include <boost/interprocess/detail/type_traits.hpp>#include <boost/interprocess/detail/mpl.hpp>namespace boost {namespace interprocess {namespace detail {struct named_creation_functor_no_arg{};template <class T, class Arg = named_creation_functor_no_arg>class named_creation_functor{   typedef named_creation_functor_no_arg no_arg_t;   public:   named_creation_functor(detail::create_enum_t type, Arg arg = Arg())      :  m_creation_type(type), m_arg(arg){}   template<class ArgType>   void construct(void *address, typename enable_if_c<is_same<ArgType, no_arg_t>::value>::type * = 0) const   {  new(address)T; }   template<class ArgType>   void construct(void *address, typename enable_if_c<!is_same<ArgType, no_arg_t>::value>::type * = 0) const   {  new(address)T(m_arg); }   bool operator()(void *address, std::size_t, bool created) const   {         switch(m_creation_type){         case detail::DoOpen:            return true;         break;         case detail::DoCreate:         case detail::DoOpenOrCreate:            if(created){               construct<Arg>(address);            }            return true;         break;         default:            return false;         break;      }   }   private:   detail::create_enum_t m_creation_type;   Arg m_arg;};}  //namespace detail {}  //namespace interprocess {}  //namespace boost {#endif   //BOOST_INTERPROCESS_SYNC_NAMED_CREATION_FUNCTOR_HPP

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?