1// static_assert.hpp --------------------------------------------------------------//
2
3// Copyright 2009-2010 Vicente J. Botet Escriba
4
5// Distributed under the Boost Software License, Version 1.0.
6// See http://www.boost.org/LICENSE_1_0.txt
7
8
9#ifndef BOOST_EX_CHRONO_DETAIL_STATIC_ASSERT_HPP
10#define BOOST_EX_CHRONO_DETAIL_STATIC_ASSERT_HPP
11
12#include <boost/config.hpp>
13
14#ifndef BOOST_NO_CXX11_STATIC_ASSERT
15#define BOOST_EX_CHRONO_STATIC_ASSERT(CND, MSG, TYPES) static_assert(CND,MSG)
16#elif defined(BOOST_CHRONO_USES_STATIC_ASSERT)
17#include <boost/static_assert.hpp>
18#define BOOST_EX_CHRONO_STATIC_ASSERT(CND, MSG, TYPES) BOOST_STATIC_ASSERT(CND)
19#elif defined(BOOST_CHRONO_USES_MPL_ASSERT)
20#include <boost/mpl/assert.hpp>
21#include <boost/mpl/bool.hpp>
22#define BOOST_EX_CHRONO_STATIC_ASSERT(CND, MSG, TYPES) \
23 BOOST_MPL_ASSERT_MSG(boost::mpl::bool_< (CND) >::type::value, MSG, TYPES)
24#else
25//~ #elif defined(BOOST_CHRONO_USES_ARRAY_ASSERT)
26#define BOOST_EX_CHRONO_STATIC_ASSERT(CND, MSG, TYPES) static char BOOST_JOIN(boost_chrono_test_,__LINE__)[(CND)?1:-1]
27//~ #define BOOST_EX_CHRONO_STATIC_ASSERT(CND, MSG, TYPES)
28#endif
29
30#endif // BOOST_EX_CHRONO_DETAIL_STATIC_ASSERT_HPP
31

source code of boost/libs/ratio/example/static_assert.hpp