PageRenderTime 16ms CodeModel.GetById 12ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/src/contrib/boost/mpl/eval_if.hpp

http://pythonocc.googlecode.com/
C++ Header | 71 lines | 49 code | 10 blank | 12 comment | 4 complexity | 6b8ce0847fdab8c611199ab0eb8220da MD5 | raw file
 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// $Id: eval_if.hpp 49267 2008-10-11 06:19:02Z agurtovoy $
14// $Date: 2008-10-11 02:19:02 -0400 (Sat, 11 Oct 2008) $
15// $Revision: 49267 $
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