MSVC 6.x workaround: replace MPL asserts with BOOST_STATIC_ASSERT

[SVN r25308]
This commit is contained in:
Aleksey Gurtovoy
2004-09-21 13:48:10 +00:00
parent 8bf3e8be3a
commit e58c07109f
13 changed files with 97 additions and 63 deletions

View File

@@ -21,8 +21,8 @@
#if !defined(BOOST_MPL_PREPROCESSING_MODE)
# include <boost/mpl/arg_fwd.hpp>
# include <boost/mpl/assert.hpp>
# include <boost/mpl/aux_/na.hpp>
# include <boost/mpl/aux_/na_assert.hpp>
# include <boost/mpl/aux_/arity_spec.hpp>
# include <boost/mpl/aux_/arg_typedef.hpp>
#endif
@@ -103,7 +103,7 @@ template<> struct arg<i_>
struct apply
{
typedef BOOST_PP_CAT(U,i_) type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -121,7 +121,7 @@ template<> struct arg<-1>
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};

View File

@@ -19,6 +19,7 @@
#include <boost/mpl/aux_/config/msvc.hpp>
#include <boost/mpl/aux_/config/ctps.hpp>
BOOST_MPL_AUX_ADL_BARRIER_NAMESPACE_OPEN
// n.a. == not available

View File

@@ -0,0 +1,33 @@
#ifndef BOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
#define BOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED
// Copyright Aleksey Gurtovoy 2001-2004
//
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
// See http://www.boost.org/libs/mpl for documentation.
// $Source$
// $Date$
// $Revision$
#include <boost/mpl/aux_/na.hpp>
#include <boost/mpl/aux_/config/msvc.hpp>
#include <boost/mpl/aux_/config/workaround.hpp>
#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
# include <boost/mpl/assert.hpp>
# define BOOST_MPL_AUX_ASSERT_NOT_NA(x) \
BOOST_MPL_ASSERT_NOT((is_na<type>)) \
/**/
#else
# include <boost/static_assert.hpp>
# define BOOST_MPL_AUX_ASSERT_NOT_NA(x) \
BOOST_STATIC_ASSERT(!is_na<x>::value) \
/**/
#endif
#endif // BOOST_MPL_AUX_NA_ASSERT_HPP_INCLUDED

View File

@@ -23,7 +23,7 @@ template<> struct arg< -1 >
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -40,7 +40,7 @@ template<> struct arg<1>
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -57,7 +57,7 @@ template<> struct arg<2>
struct apply
{
typedef U2 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -74,7 +74,7 @@ template<> struct arg<3>
struct apply
{
typedef U3 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -91,7 +91,7 @@ template<> struct arg<4>
struct apply
{
typedef U4 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -108,7 +108,7 @@ template<> struct arg<5>
struct apply
{
typedef U5 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};

View File

@@ -24,7 +24,7 @@ template<> struct arg< -1 >
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -42,7 +42,7 @@ template<> struct arg<1>
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -60,7 +60,7 @@ template<> struct arg<2>
struct apply
{
typedef U2 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -78,7 +78,7 @@ template<> struct arg<3>
struct apply
{
typedef U3 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -96,7 +96,7 @@ template<> struct arg<4>
struct apply
{
typedef U4 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -114,7 +114,7 @@ template<> struct arg<5>
struct apply
{
typedef U5 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};

View File

@@ -24,7 +24,7 @@ template<> struct arg< -1 >
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -42,7 +42,7 @@ template<> struct arg<1>
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -60,7 +60,7 @@ template<> struct arg<2>
struct apply
{
typedef U2 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -78,7 +78,7 @@ template<> struct arg<3>
struct apply
{
typedef U3 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -96,7 +96,7 @@ template<> struct arg<4>
struct apply
{
typedef U4 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -114,7 +114,7 @@ template<> struct arg<5>
struct apply
{
typedef U5 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};

View File

@@ -24,7 +24,7 @@ template<> struct arg< -1 >
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -42,7 +42,7 @@ template<> struct arg<1>
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -60,7 +60,7 @@ template<> struct arg<2>
struct apply
{
typedef U2 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -78,7 +78,7 @@ template<> struct arg<3>
struct apply
{
typedef U3 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -96,7 +96,7 @@ template<> struct arg<4>
struct apply
{
typedef U4 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -114,7 +114,7 @@ template<> struct arg<5>
struct apply
{
typedef U5 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};

View File

@@ -24,7 +24,7 @@ template<> struct arg< -1 >
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -42,7 +42,7 @@ template<> struct arg<1>
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -60,7 +60,7 @@ template<> struct arg<2>
struct apply
{
typedef U2 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -78,7 +78,7 @@ template<> struct arg<3>
struct apply
{
typedef U3 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -96,7 +96,7 @@ template<> struct arg<4>
struct apply
{
typedef U4 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -114,7 +114,7 @@ template<> struct arg<5>
struct apply
{
typedef U5 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};

View File

@@ -24,7 +24,7 @@ template<> struct arg< -1 >
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -42,7 +42,7 @@ template<> struct arg<1>
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -60,7 +60,7 @@ template<> struct arg<2>
struct apply
{
typedef U2 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -78,7 +78,7 @@ template<> struct arg<3>
struct apply
{
typedef U3 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -96,7 +96,7 @@ template<> struct arg<4>
struct apply
{
typedef U4 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -114,7 +114,7 @@ template<> struct arg<5>
struct apply
{
typedef U5 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};

View File

@@ -24,7 +24,7 @@ template<> struct arg< -1 >
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -42,7 +42,7 @@ template<> struct arg<1>
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -60,7 +60,7 @@ template<> struct arg<2>
struct apply
{
typedef U2 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -78,7 +78,7 @@ template<> struct arg<3>
struct apply
{
typedef U3 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -96,7 +96,7 @@ template<> struct arg<4>
struct apply
{
typedef U4 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -114,7 +114,7 @@ template<> struct arg<5>
struct apply
{
typedef U5 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};

View File

@@ -24,7 +24,7 @@ template<> struct arg< -1 >
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -42,7 +42,7 @@ template<> struct arg<1>
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -60,7 +60,7 @@ template<> struct arg<2>
struct apply
{
typedef U2 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -78,7 +78,7 @@ template<> struct arg<3>
struct apply
{
typedef U3 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -96,7 +96,7 @@ template<> struct arg<4>
struct apply
{
typedef U4 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -114,7 +114,7 @@ template<> struct arg<5>
struct apply
{
typedef U5 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};

View File

@@ -24,7 +24,7 @@ template<> struct arg< -1 >
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -42,7 +42,7 @@ template<> struct arg<1>
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -60,7 +60,7 @@ template<> struct arg<2>
struct apply
{
typedef U2 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -78,7 +78,7 @@ template<> struct arg<3>
struct apply
{
typedef U3 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -96,7 +96,7 @@ template<> struct arg<4>
struct apply
{
typedef U4 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -114,7 +114,7 @@ template<> struct arg<5>
struct apply
{
typedef U5 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};

View File

@@ -24,7 +24,7 @@ template<> struct arg< -1 >
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -42,7 +42,7 @@ template<> struct arg<1>
struct apply
{
typedef U1 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -60,7 +60,7 @@ template<> struct arg<2>
struct apply
{
typedef U2 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -78,7 +78,7 @@ template<> struct arg<3>
struct apply
{
typedef U3 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -96,7 +96,7 @@ template<> struct arg<4>
struct apply
{
typedef U4 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};
@@ -114,7 +114,7 @@ template<> struct arg<5>
struct apply
{
typedef U5 type;
BOOST_MPL_ASSERT_NOT((is_na<type>));
BOOST_MPL_AUX_ASSERT_NOT_NA(type);
};
};