1 // (C) Copyright John Maddock 2005.
2 // Use, modification and distribution are subject to the
3 // Boost Software License, Version 1.0. (See accompanying file
4 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 #ifndef BOOST_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP
7 #define BOOST_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP
9 #include <boost/config.hpp>
10 #include <boost/mpl/bool.hpp>
11 #include <boost/mpl/integral_c.hpp>
15 #if defined(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) || defined(__BORLANDC__)
16 template <class T
, int val
>
18 template <class T
, T val
>
20 struct integral_constant
: public mpl::integral_c
<T
, val
>
22 typedef integral_constant
<T
,val
> type
;
25 template<> struct integral_constant
<bool,true> : public mpl::true_
27 #if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
28 # pragma warning(push)
29 # pragma warning(disable:4097)
30 typedef mpl::true_ base_
;
34 typedef integral_constant
<bool,true> type
;
36 template<> struct integral_constant
<bool,false> : public mpl::false_
38 #if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
39 # pragma warning(push)
40 # pragma warning(disable:4097)
41 typedef mpl::false_ base_
;
45 typedef integral_constant
<bool,false> type
;
48 typedef integral_constant
<bool,true> true_type
;
49 typedef integral_constant
<bool,false> false_type
;