9 #ifndef BOOST_TT_IS_COPY_CONSTRUCTIBLE_HPP_INCLUDED
10 #define BOOST_TT_IS_COPY_CONSTRUCTIBLE_HPP_INCLUDED
15 #if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1800) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40900)
19 #if !BOOST_WORKAROUND(BOOST_MSVC, <= 1800)
49 template <
class T>
struct is_copy_constructible_imp<
T, true> :
public false_type{};
53 template <
class T>
struct is_copy_constructible :
public detail::is_copy_constructible_imp<T, is_base_and_derived<boost::noncopyable, T>::value>{};
55 template <>
struct is_copy_constructible<void> :
public false_type{};
56 template <>
struct is_copy_constructible<void const> :
public false_type{};
57 template <>
struct is_copy_constructible<void const volatile> :
public false_type{};
58 template <>
struct is_copy_constructible<void volatile> :
public false_type{};
77 #pragma warning(disable:4181)
84 template <
bool DerivedFromNoncopyable,
class T>
85 struct is_copy_constructible_impl2 {
95 #if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) && !defined(BOOST_INTEL_CXX_VERSION) && !(defined(BOOST_MSVC) && _MSC_VER == 1800)
97 #ifdef BOOST_NO_CXX11_DECLTYPE
154 struct is_copy_constructible_impl2<true,
T> {
159 struct is_copy_constructible_impl {
162 boost::detail::is_copy_constructible_impl2<
171 template <
class T>
struct is_copy_constructible :
public integral_constant<bool, ::boost::detail::is_copy_constructible_impl<T>::value>{};
172 template <>
struct is_copy_constructible<void> :
public false_type{};
173 #ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
174 template <>
struct is_copy_constructible<void const> :
public false_type{};
175 template <>
struct is_copy_constructible<void volatile> :
public false_type{};
176 template <>
struct is_copy_constructible<void const volatile> :
public false_type{};
187 #endif // BOOST_TT_IS_COPY_CONSTRUCTIBLE_HPP_INCLUDED