sl@0: sl@0: #ifndef BOOST_MPL_INTEGRAL_C_HPP_INCLUDED sl@0: #define BOOST_MPL_INTEGRAL_C_HPP_INCLUDED sl@0: sl@0: // Copyright Aleksey Gurtovoy 2000-2006 sl@0: // sl@0: // Distributed under the Boost Software License, Version 1.0. sl@0: // (See accompanying file LICENSE_1_0.txt or copy at sl@0: // http://www.boost.org/LICENSE_1_0.txt) sl@0: // sl@0: // See http://www.boost.org/libs/mpl for documentation. sl@0: sl@0: // $Source: /cvsroot/boost/boost/boost/mpl/integral_c.hpp,v $ sl@0: // $Date: 2006/11/08 21:44:27 $ sl@0: // $Revision: 1.22.6.1 $ sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: #if BOOST_WORKAROUND(__HP_aCC, <= 53800) sl@0: // the type of non-type template arguments may not depend on template arguments sl@0: # define AUX_WRAPPER_PARAMS(N) typename T, long N sl@0: #else sl@0: # define AUX_WRAPPER_PARAMS(N) typename T, T N sl@0: #endif sl@0: sl@0: #define AUX_WRAPPER_NAME integral_c sl@0: #define AUX_WRAPPER_VALUE_TYPE T sl@0: #define AUX_WRAPPER_INST(value) AUX_WRAPPER_NAME< T, value > sl@0: #include sl@0: sl@0: sl@0: #if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \ sl@0: && !BOOST_WORKAROUND(__BORLANDC__, <= 0x551) sl@0: BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN sl@0: // 'bool' constant doesn't have 'next'/'prior' members sl@0: template< bool C > sl@0: struct integral_c sl@0: { sl@0: BOOST_STATIC_CONSTANT(bool, value = C); sl@0: typedef integral_c_tag tag; sl@0: typedef integral_c type; sl@0: typedef bool value_type; sl@0: operator bool() const { return this->value; } sl@0: }; sl@0: BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_CLOSE sl@0: #endif sl@0: sl@0: #endif // BOOST_MPL_INTEGRAL_C_HPP_INCLUDED