diff --git a/include/boost/mpl/if.hpp b/include/boost/mpl/if.hpp index 7283e5b..6c00ce7 100644 --- a/include/boost/mpl/if.hpp +++ b/include/boost/mpl/if.hpp @@ -157,6 +157,18 @@ struct if_ BOOST_MPL_AUX_VOID_SPEC(3, if_) +/* +template<> +struct if_< void_,void_,void_ > +{ + template< typename T1,typename T2,typename T3 , typename T4=void_, typename T5=void_ > + struct apply : if_< T1,T2,T3 > { }; +}; + + namespace aux { template< typename T1,typename T2,typename T3 > struct template_arity< if_< T1,T2,T3 > > { static const int value = 3; }; + template<> struct template_arity< if_< void_,void_,void_ > > { static const int value = 3; }; } +*/ + } // namespace mpl } // namespace boost diff --git a/include/boost/mpl/integral_c.hpp b/include/boost/mpl/integral_c.hpp index 8fecd90..e50a2af 100644 --- a/include/boost/mpl/integral_c.hpp +++ b/include/boost/mpl/integral_c.hpp @@ -31,7 +31,12 @@ struct integral_c // have to #ifdef here: some compilers don't like the 'N + 1' form (MSVC), // while some other don't like 'value + 1' (Borland) -#if defined(__BORLANDC__) || defined(__IBMCPP__) || defined(__EDG_VERSION__) && __EDG_VERSION__ <= 241 +#if defined(__BORLANDC__) + BOOST_STATIC_CONSTANT(T, next_value = (value + 1)); + BOOST_STATIC_CONSTANT(T, prior_value = (value - 1)); + typedef integral_c next; + typedef integral_c prior; +#elif defined(__IBMCPP__) || defined(__EDG_VERSION__) && __EDG_VERSION__ <= 241 BOOST_STATIC_CONSTANT(T, next_value = (N + 1)); BOOST_STATIC_CONSTANT(T, prior_value = (N - 1)); typedef integral_c next;