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 pdalboost { 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 class noncopyable 24 { 25 protected: 26 #if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) && !defined(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS) 27 BOOST_CONSTEXPR noncopyable() = default; 28 ~noncopyable() = default; 29 #else 30 noncopyable() {} 31 ~noncopyable() {} 32 #endif 33 #if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) 34 noncopyable( const noncopyable& ) = delete; 35 noncopyable& operator=( const noncopyable& ) = delete; 36 #else 37 private: // emphasize the following members are private 38 noncopyable( const noncopyable& ); 39 noncopyable& operator=( const noncopyable& ); 40 #endif 41 }; 42 } 43 44 typedef noncopyable_::noncopyable noncopyable; 45 46 } // namespace pdalboost 47 48 #endif // BOOST_CORE_NONCOPYABLE_HPP 49