Chris@16
|
1
|
Chris@16
|
2 #ifndef BOOST_MPL_INTEGRAL_C_HPP_INCLUDED
|
Chris@16
|
3 #define BOOST_MPL_INTEGRAL_C_HPP_INCLUDED
|
Chris@16
|
4
|
Chris@16
|
5 // Copyright Aleksey Gurtovoy 2000-2006
|
Chris@16
|
6 //
|
Chris@16
|
7 // Distributed under the Boost Software License, Version 1.0.
|
Chris@16
|
8 // (See accompanying file LICENSE_1_0.txt or copy at
|
Chris@16
|
9 // http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
10 //
|
Chris@16
|
11 // See http://www.boost.org/libs/mpl for documentation.
|
Chris@16
|
12
|
Chris@101
|
13 // $Id$
|
Chris@101
|
14 // $Date$
|
Chris@101
|
15 // $Revision$
|
Chris@16
|
16
|
Chris@16
|
17 #include <boost/mpl/integral_c_fwd.hpp>
|
Chris@16
|
18 #include <boost/mpl/aux_/config/ctps.hpp>
|
Chris@16
|
19 #include <boost/mpl/aux_/config/static_constant.hpp>
|
Chris@16
|
20 #include <boost/mpl/aux_/config/workaround.hpp>
|
Chris@16
|
21
|
Chris@16
|
22 #if BOOST_WORKAROUND(__HP_aCC, <= 53800)
|
Chris@16
|
23 // the type of non-type template arguments may not depend on template arguments
|
Chris@16
|
24 # define AUX_WRAPPER_PARAMS(N) typename T, long N
|
Chris@16
|
25 #else
|
Chris@16
|
26 # define AUX_WRAPPER_PARAMS(N) typename T, T N
|
Chris@16
|
27 #endif
|
Chris@16
|
28
|
Chris@16
|
29 #define AUX_WRAPPER_NAME integral_c
|
Chris@16
|
30 #define AUX_WRAPPER_VALUE_TYPE T
|
Chris@16
|
31 #define AUX_WRAPPER_INST(value) AUX_WRAPPER_NAME< T, value >
|
Chris@16
|
32 #include <boost/mpl/aux_/integral_wrapper.hpp>
|
Chris@16
|
33
|
Chris@16
|
34
|
Chris@16
|
35 #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|
Chris@16
|
36 && !BOOST_WORKAROUND(__BORLANDC__, <= 0x551)
|
Chris@16
|
37 BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
|
Chris@16
|
38 // 'bool' constant doesn't have 'next'/'prior' members
|
Chris@16
|
39 template< bool C >
|
Chris@16
|
40 struct integral_c<bool, C>
|
Chris@16
|
41 {
|
Chris@16
|
42 BOOST_STATIC_CONSTANT(bool, value = C);
|
Chris@16
|
43 typedef integral_c_tag tag;
|
Chris@16
|
44 typedef integral_c type;
|
Chris@16
|
45 typedef bool value_type;
|
Chris@16
|
46 operator bool() const { return this->value; }
|
Chris@16
|
47 };
|
Chris@16
|
48 BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE
|
Chris@16
|
49 #endif
|
Chris@16
|
50
|
Chris@16
|
51 #endif // BOOST_MPL_INTEGRAL_C_HPP_INCLUDED
|