// (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-// Permission to copy, use, modify, sell and
-// distribute this software is granted provided this copyright notice appears
-// in all copies. This software is provided "as is" without express or implied
-// warranty, and with no claim as to its suitability for any purpose.
+// 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 for most recent version including documentation.
+// See http://www.boost.org/libs/type_traits for most recent version including documentation.
//
// defines traits classes for arithmetic types:
// is_void, is_integral, is_float, is_arithmetic, is_fundamental.
-//
-
-// Revision History:
-// Feb 19 2001 Added #include <climits> (David Abrahams)
-
-#ifndef BOOST_ARITHMETIC_TYPE_TRAITS_HPP
-#define BOOST_ARITHMETIC_TYPE_TRAITS_HPP
-
-#ifndef BOOST_ICE_TYPE_TRAITS_HPP
-#include <boost/type_traits/ice.hpp>
-#endif
-#ifndef BOOST_FWD_TYPE_TRAITS_HPP
-#include <boost/type_traits/fwd.hpp>
-#endif
-
-#include <limits.h> // for ULLONG_MAX/ULONG_LONG_MAX
-
-namespace boost{
-
-//* is a type T void - is_void<T>
-template <typename T> struct is_void{ BOOST_STATIC_CONSTANT(bool, value = false); };
-template <> struct is_void<void>{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-//* is a type T an [cv-qualified-] integral type described in the standard (3.9.1p3)
-// as an extention we include long long, as this is likely to be added to the
-// standard at a later date
-template <typename T> struct is_integral
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-template <> struct is_integral<unsigned char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<unsigned short>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<unsigned int>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<unsigned long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<signed char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<signed short>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<signed int>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<signed long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_NO_INTRINSIC_WCHAR_T
-template <> struct is_integral<wchar_t>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <> struct is_integral<bool>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-# if defined(BOOST_HAS_LONG_LONG)
-template <> struct is_integral<unsigned long long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<long long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#elif defined(BOOST_HAS_MS_INT64)
-template <> struct is_integral<unsigned __int64>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<__int64>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-
-//* is a type T a floating-point type described in the standard (3.9.1p8)
-template <typename T> struct is_float
-{ BOOST_STATIC_CONSTANT(bool, value = false); };
-template <> struct is_float<float>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_float<double>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_float<long double>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-//
-// declare cv-qualified specialisations of these templates only
-// if BOOST_NO_CV_SPECIALIZATIONS is not defined:
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template <> struct is_void<const void>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_void<volatile void>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_void<const volatile void>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#ifndef BOOST_NO_CV_SPECIALIZATIONS
-// const-variations:
-template <> struct is_integral<const unsigned char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const unsigned short>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const unsigned int>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const unsigned long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const signed char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const signed short>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const signed int>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const signed long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_NO_INTRINSIC_WCHAR_T
-template <> struct is_integral<const wchar_t>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <> struct is_integral<const bool>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-# if defined(BOOST_HAS_LONG_LONG)
-template <> struct is_integral<const unsigned long long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const long long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#elif defined(BOOST_HAS_MS_INT64)
-template <> struct is_integral<const unsigned __int64>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const __int64>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif //__int64
-
-template <> struct is_float<const float>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_float<const double>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_float<const long double>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-// volatile-variations:
-template <> struct is_integral<volatile unsigned char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile unsigned short>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile unsigned int>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile unsigned long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile signed char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile signed short>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile signed int>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile signed long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_NO_INTRINSIC_WCHAR_T
-template <> struct is_integral<volatile wchar_t>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <> struct is_integral<volatile bool>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-# if defined(BOOST_HAS_LONG_LONG)
-template <> struct is_integral<volatile unsigned long long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile long long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#elif defined(BOOST_HAS_MS_INT64)
-template <> struct is_integral<volatile unsigned __int64>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<volatile __int64>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif //__int64
-
-template <> struct is_float<volatile float>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_float<volatile double>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_float<volatile long double>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-// const-volatile-variations:
-template <> struct is_integral<const volatile unsigned char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile unsigned short>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile unsigned int>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile unsigned long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile signed char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile signed short>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile signed int>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile signed long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile char>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_NO_INTRINSIC_WCHAR_T
-template <> struct is_integral<const volatile wchar_t>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-template <> struct is_integral<const volatile bool>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-# if defined(BOOST_HAS_LONG_LONG)
-template <> struct is_integral<const volatile unsigned long long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile long long>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#elif defined(BOOST_HAS_MS_INT64)
-template <> struct is_integral<const volatile unsigned __int64>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_integral<const volatile __int64>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif //__int64
-
-template <> struct is_float<const volatile float>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_float<const volatile double>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-template <> struct is_float<const volatile long double>
-{ BOOST_STATIC_CONSTANT(bool, value = true); };
-
-#endif // BOOST_NO_CV_SPECIALIZATIONS
-
-//* is a type T an arithmetic type described in the standard (3.9.1p8)
-template <typename T>
-struct is_arithmetic
-{
- BOOST_STATIC_CONSTANT(bool, value =
- (::boost::type_traits::ice_or<
- ::boost::is_integral<T>::value,
- ::boost::is_float<T>::value
- >::value));
-};
-
-//* is a type T a fundamental type described in the standard (3.9.1)
-template <typename T>
-struct is_fundamental
-{
- BOOST_STATIC_CONSTANT(bool, value =
- (::boost::type_traits::ice_or<
- ::boost::is_arithmetic<T>::value,
- ::boost::is_void<T>::value
- >::value));
-};
-
-} // namespace boost
-
-#endif
-
-
-
-
+#ifndef BOOST_TT_ARITHMETIC_TRAITS_HPP_INCLUDED
+#define BOOST_TT_ARITHMETIC_TRAITS_HPP_INCLUDED
+#include <boost/type_traits/is_arithmetic.hpp>
+#include <boost/type_traits/is_float.hpp>
+#include <boost/type_traits/is_fundamental.hpp>
+#include <boost/type_traits/is_integral.hpp>
+#include <boost/type_traits/is_void.hpp>
+#endif // BOOST_TT_ARITHMETIC_TRAITS_HPP_INCLUDED