// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000. // Use, modification and distribution are subject to 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/type_traits for most recent version including documentation. #ifndef BOOST_TT_HAS_NOTHROW_COPY_HPP_INCLUDED #define BOOST_TT_HAS_NOTHROW_COPY_HPP_INCLUDED #include #include #ifdef BOOST_HAS_NOTHROW_COPY #if defined(BOOST_CLANG) || defined(__GNUC__) || defined(__ghs__) || defined(__CODEGEARC__) || defined(__SUNPRO_CC) #include #include #include #include #ifdef BOOST_INTEL #include #endif #elif defined(BOOST_MSVC) || defined(BOOST_INTEL) #include #include #ifdef BOOST_INTEL #include #include #endif #endif namespace boost { template struct has_nothrow_copy_constructor : public integral_constant{}; #elif !defined(BOOST_NO_CXX11_NOEXCEPT) #include #include namespace boost{ namespace detail{ template struct has_nothrow_copy_constructor_imp : public boost::integral_constant{}; template struct has_nothrow_copy_constructor_imp : public boost::integral_constant()))>{}; } template struct has_nothrow_copy_constructor : public detail::has_nothrow_copy_constructor_imp::value>{}; #else #include namespace boost{ template struct has_nothrow_copy_constructor : public integral_constant::value>{}; #endif template <> struct has_nothrow_copy_constructor : public false_type{}; template struct has_nothrow_copy_constructor : public false_type{}; template struct has_nothrow_copy_constructor : public false_type{}; #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) template struct has_nothrow_copy_constructor : public false_type{}; #endif #ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS template <> struct has_nothrow_copy_constructor : public false_type{}; template <> struct has_nothrow_copy_constructor : public false_type{}; template <> struct has_nothrow_copy_constructor : public false_type{}; #endif template struct has_nothrow_copy : public has_nothrow_copy_constructor{}; } // namespace boost #endif // BOOST_TT_HAS_NOTHROW_COPY_HPP_INCLUDED