github.com/searKing/golang/go@v1.2.117/os/signal/cgo/include/boost/core/noncopyable.hpp (about)

     1  //  Boost noncopyable.hpp header file  --------------------------------------//
     2  
     3  //  (C) Copyright Beman Dawes 1999-2003. Distributed under the Boost
     4  //  Software License, Version 1.0. (See accompanying file
     5  //  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
     6  
     7  //  See http://www.boost.org/libs/utility for documentation.
     8  
     9  #ifndef BOOST_CORE_NONCOPYABLE_HPP
    10  #define BOOST_CORE_NONCOPYABLE_HPP
    11  
    12  #include <boost/config.hpp>
    13  
    14  namespace boost {
    15  
    16  //  Private copy constructor and copy assignment ensure classes derived from
    17  //  class noncopyable cannot be copied.
    18  
    19  //  Contributed by Dave Abrahams
    20  
    21  namespace noncopyable_  // protection from unintended ADL
    22  {
    23  #ifndef BOOST_NONCOPYABLE_BASE_TOKEN_DEFINED
    24  #define BOOST_NONCOPYABLE_BASE_TOKEN_DEFINED
    25  
    26  // noncopyable derives from base_token to enable Type Traits to detect
    27  // whether a type derives from noncopyable without needing the definition
    28  // of noncopyable itself.
    29  //
    30  // The definition of base_token is macro-guarded so that Type Traits can
    31  // define it locally without including this header, to avoid a dependency
    32  // on Core.
    33  
    34    struct base_token {};
    35  
    36  #endif // #ifndef BOOST_NONCOPYABLE_BASE_TOKEN_DEFINED
    37  
    38    class noncopyable: base_token
    39    {
    40    protected:
    41  #if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) && !defined(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS)
    42        BOOST_CONSTEXPR noncopyable() = default;
    43        ~noncopyable() = default;
    44  #else
    45        noncopyable() {}
    46        ~noncopyable() {}
    47  #endif
    48  #if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS)
    49        noncopyable( const noncopyable& ) = delete;
    50        noncopyable& operator=( const noncopyable& ) = delete;
    51  #else
    52    private:  // emphasize the following members are private
    53        noncopyable( const noncopyable& );
    54        noncopyable& operator=( const noncopyable& );
    55  #endif
    56    };
    57  }
    58  
    59  typedef noncopyable_::noncopyable noncopyable;
    60  
    61  } // namespace boost
    62  
    63  #endif  // BOOST_CORE_NONCOPYABLE_HPP