diff options
Diffstat (limited to 'contrib/src/boost/type_traits/is_default_constructible.hpp')
-rw-r--r-- | contrib/src/boost/type_traits/is_default_constructible.hpp | 168 |
1 files changed, 84 insertions, 84 deletions
diff --git a/contrib/src/boost/type_traits/is_default_constructible.hpp b/contrib/src/boost/type_traits/is_default_constructible.hpp index fa5d76a..e4734d3 100644 --- a/contrib/src/boost/type_traits/is_default_constructible.hpp +++ b/contrib/src/boost/type_traits/is_default_constructible.hpp @@ -1,84 +1,84 @@ - -// (C) Copyright John Maddock 2015. -// 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_IS_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED -#define BOOST_TT_IS_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED - -#include <cstddef> // size_t -#include <boost/type_traits/integral_constant.hpp> -#include <boost/detail/workaround.hpp> - -#if BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700) -#include <boost/type_traits/is_abstract.hpp> -#endif - -#if !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1800) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40500) - -#include <boost/type_traits/detail/yes_no_type.hpp> - -namespace boost{ - - namespace detail{ - - struct is_default_constructible_imp - { - template<typename _Tp, typename = decltype(_Tp())> - static boost::type_traits::yes_type test(int); - - template<typename> - static boost::type_traits::no_type test(...); - }; -#if BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700) - template<class T, bool b> - struct is_default_constructible_abstract_filter - { - static const bool value = sizeof(is_default_constructible_imp::test<T>(0)) == sizeof(boost::type_traits::yes_type); - }; - template<class T> - struct is_default_constructible_abstract_filter<T, true> - { - static const bool value = false; - }; -#endif - } - -#if BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700) - template <class T> struct is_default_constructible : public integral_constant<bool, detail::is_default_constructible_abstract_filter<T, boost::is_abstract<T>::value>::value>{}; -#else - template <class T> struct is_default_constructible : public integral_constant<bool, sizeof(detail::is_default_constructible_imp::test<T>(0)) == sizeof(boost::type_traits::yes_type)>{}; -#endif - template <class T, std::size_t N> struct is_default_constructible<T[N]> : public is_default_constructible<T>{}; - template <class T> struct is_default_constructible<T[]> : public is_default_constructible<T>{}; - template <class T> struct is_default_constructible<T&> : public integral_constant<bool, false>{}; -#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) - template <class T> struct is_default_constructible<T&&> : public integral_constant<bool, false>{}; -#endif - template <> struct is_default_constructible<void> : public integral_constant<bool, false>{}; - template <> struct is_default_constructible<void const> : public integral_constant<bool, false>{}; - template <> struct is_default_constructible<void volatile> : public integral_constant<bool, false>{}; - template <> struct is_default_constructible<void const volatile> : public integral_constant<bool, false>{}; - -#else - -#include <boost/type_traits/is_pod.hpp> - -namespace boost{ - - // We don't know how to implement this, note we can not use has_trivial_constructor here - // because the correct implementation of that trait requires this one: - template <class T> struct is_default_constructible : public is_pod<T>{}; - template <> struct is_default_constructible<void> : public integral_constant<bool, false>{}; - template <> struct is_default_constructible<void const> : public integral_constant<bool, false>{}; - template <> struct is_default_constructible<void volatile> : public integral_constant<bool, false>{}; - template <> struct is_default_constructible<void const volatile> : public integral_constant<bool, false>{}; - -#endif - -} // namespace boost - -#endif // BOOST_TT_IS_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED +
+// (C) Copyright John Maddock 2015.
+// 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_IS_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED
+#define BOOST_TT_IS_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED
+
+#include <cstddef> // size_t
+#include <boost/type_traits/integral_constant.hpp>
+#include <boost/detail/workaround.hpp>
+
+#if BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700)
+#include <boost/type_traits/is_abstract.hpp>
+#endif
+
+#if !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1800) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40500)
+
+#include <boost/type_traits/detail/yes_no_type.hpp>
+
+namespace boost{
+
+ namespace detail{
+
+ struct is_default_constructible_imp
+ {
+ template<typename _Tp, typename = decltype(_Tp())>
+ static boost::type_traits::yes_type test(int);
+
+ template<typename>
+ static boost::type_traits::no_type test(...);
+ };
+#if BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700)
+ template<class T, bool b>
+ struct is_default_constructible_abstract_filter
+ {
+ static const bool value = sizeof(is_default_constructible_imp::test<T>(0)) == sizeof(boost::type_traits::yes_type);
+ };
+ template<class T>
+ struct is_default_constructible_abstract_filter<T, true>
+ {
+ static const bool value = false;
+ };
+#endif
+ }
+
+#if BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700)
+ template <class T> struct is_default_constructible : public integral_constant<bool, detail::is_default_constructible_abstract_filter<T, boost::is_abstract<T>::value>::value>{};
+#else
+ template <class T> struct is_default_constructible : public integral_constant<bool, sizeof(detail::is_default_constructible_imp::test<T>(0)) == sizeof(boost::type_traits::yes_type)>{};
+#endif
+ template <class T, std::size_t N> struct is_default_constructible<T[N]> : public is_default_constructible<T>{};
+ template <class T> struct is_default_constructible<T[]> : public is_default_constructible<T>{};
+ template <class T> struct is_default_constructible<T&> : public integral_constant<bool, false>{};
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+ template <class T> struct is_default_constructible<T&&> : public integral_constant<bool, false>{};
+#endif
+ template <> struct is_default_constructible<void> : public integral_constant<bool, false>{};
+ template <> struct is_default_constructible<void const> : public integral_constant<bool, false>{};
+ template <> struct is_default_constructible<void volatile> : public integral_constant<bool, false>{};
+ template <> struct is_default_constructible<void const volatile> : public integral_constant<bool, false>{};
+
+#else
+
+#include <boost/type_traits/is_pod.hpp>
+
+namespace boost{
+
+ // We don't know how to implement this, note we can not use has_trivial_constructor here
+ // because the correct implementation of that trait requires this one:
+ template <class T> struct is_default_constructible : public is_pod<T>{};
+ template <> struct is_default_constructible<void> : public integral_constant<bool, false>{};
+ template <> struct is_default_constructible<void const> : public integral_constant<bool, false>{};
+ template <> struct is_default_constructible<void volatile> : public integral_constant<bool, false>{};
+ template <> struct is_default_constructible<void const volatile> : public integral_constant<bool, false>{};
+
+#endif
+
+} // namespace boost
+
+#endif // BOOST_TT_IS_DEFAULT_CONSTRUCTIBLE_HPP_INCLUDED
|