fixing stuff
[dyninst.git] / dynutil / h / dyn_detail / boost / type_traits / integral_constant.hpp
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)
5
6 #ifndef DYN_DETAIL_BOOST_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP
7 #define DYN_DETAIL_BOOST_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP
8
9 #include <dyn_detail/boost/config.hpp>
10 #include <dyn_detail/boost/mpl/bool.hpp>
11 #include <dyn_detail/boost/mpl/integral_c.hpp>
12
13 namespace dyn_detail{
14 namespace boost{
15
16 #if defined(DYN_DETAIL_BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS) || defined(__BORLANDC__)
17 template <class T, int val>
18 #else
19 template <class T, T val>
20 #endif
21 struct integral_constant : public mpl::integral_c<T, val>
22 {
23    typedef integral_constant<T,val> type;
24 };
25
26 template<> struct integral_constant<bool,true> : public mpl::true_ 
27 {
28 #if DYN_DETAIL_BOOST_WORKAROUND(DYN_DETAIL_BOOST_MSVC, < 1300)
29 # pragma warning(push)
30 # pragma warning(disable:4097)
31    typedef mpl::true_ base_;
32    using base_::value;
33 # pragma warning(pop)
34 #endif
35    typedef integral_constant<bool,true> type;
36 };
37 template<> struct integral_constant<bool,false> : public mpl::false_ 
38 {
39 #if DYN_DETAIL_BOOST_WORKAROUND(DYN_DETAIL_BOOST_MSVC, < 1300)
40 # pragma warning(push)
41 # pragma warning(disable:4097)
42    typedef mpl::false_ base_;
43    using base_::value;
44 # pragma warning(pop)
45 #endif
46    typedef integral_constant<bool,false> type;
47 };
48
49 typedef integral_constant<bool,true> true_type;
50 typedef integral_constant<bool,false> false_type;
51
52 }
53 }
54
55 #endif