Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_33_1/boost/mpl/eval_if.hpp @ 18

Last change on this file since 18 was 12, checked in by landauf, 17 years ago

added boost

  • Property svn:executable set to *
File size: 1.8 KB
Line 
1
2#ifndef BOOST_MPL_EVAL_IF_HPP_INCLUDED
3#define BOOST_MPL_EVAL_IF_HPP_INCLUDED
4
5// Copyright Aleksey Gurtovoy 2000-2004
6//
7// Distributed under the Boost Software License, Version 1.0.
8// (See accompanying file LICENSE_1_0.txt or copy at
9// http://www.boost.org/LICENSE_1_0.txt)
10//
11// See http://www.boost.org/libs/mpl for documentation.
12
13// $Source: /cvsroot/boost/boost/boost/mpl/eval_if.hpp,v $
14// $Date: 2004/11/28 01:54:10 $
15// $Revision: 1.3 $
16
17#include <boost/mpl/if.hpp>
18#include <boost/mpl/aux_/na_spec.hpp>
19#include <boost/mpl/aux_/lambda_support.hpp>
20#include <boost/mpl/aux_/config/msvc.hpp>
21#include <boost/mpl/aux_/config/gcc.hpp>
22#include <boost/mpl/aux_/config/workaround.hpp>
23
24namespace boost { namespace mpl {
25
26template<
27      typename BOOST_MPL_AUX_NA_PARAM(C)
28    , typename BOOST_MPL_AUX_NA_PARAM(F1)
29    , typename BOOST_MPL_AUX_NA_PARAM(F2)
30    >
31struct eval_if
32#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
33     || ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, >= 0x0300) \
34        && BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304)) \
35        )
36{
37    typedef typename if_<C,F1,F2>::type f_;
38    typedef typename f_::type type;
39#else
40    : if_<C,F1,F2>::type
41{
42#endif
43    BOOST_MPL_AUX_LAMBDA_SUPPORT(3,eval_if,(C,F1,F2))
44};
45
46// (almost) copy & paste in order to save one more
47// recursively nested template instantiation to user
48template<
49      bool C
50    , typename F1
51    , typename F2
52    >
53struct eval_if_c
54#if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
55     || ( BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, >= 0x0300) \
56        && BOOST_WORKAROUND(BOOST_MPL_CFG_GCC, BOOST_TESTED_AT(0x0304)) \
57        )
58{
59    typedef typename if_c<C,F1,F2>::type f_;
60    typedef typename f_::type type;
61#else
62    : if_c<C,F1,F2>::type
63{
64#endif
65};
66
67BOOST_MPL_AUX_NA_SPEC(3, eval_if)
68
69}}
70
71#endif // BOOST_MPL_EVAL_IF_HPP_INCLUDED
Note: See TracBrowser for help on using the repository browser.