9 #ifndef BOOST_TT_IS_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED
10 #define BOOST_TT_IS_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED
16 #if BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700)
20 #if !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1800) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40500)
30 template<
typename _Tp,
typename = decltype(_Tp())>
36 #if BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700)
37 template<
class T,
bool b>
38 struct is_default_constructible_abstract_filter
43 struct is_default_constructible_abstract_filter<
T, true>
45 static const bool value =
false;
50 #if BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700)
51 template <
class T>
struct is_default_constructible :
public integral_constant<bool, detail::is_default_constructible_abstract_filter<T, boost::is_abstract<T>::value>::value>{};
58 #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
75 template <>
struct is_default_constructible<void> :
public integral_constant<bool, false>{};
76 template <>
struct is_default_constructible<void const> :
public integral_constant<bool, false>{};
77 template <>
struct is_default_constructible<void volatile> :
public integral_constant<bool, false>{};
78 template <>
struct is_default_constructible<void const volatile> :
public integral_constant<bool, false>{};
84 #endif // BOOST_TT_IS_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED