codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#ifndef BOOST_MPL_SWITCH_HPP_INCLUDED #define BOOST_MPL_SWITCH_HPP_INCLUDED // Copyright Aleksey Gurtovoy 2003-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: 2004-09-02 11:41:37 -0400 (Thu, 02 Sep 2004) $ // $Revision: 24874 $ #include <boost/mpl/find_if.hpp> #include <boost/mpl/deref.hpp> #include <boost/mpl/lambda.hpp> #include <boost/mpl/apply.hpp> #include <boost/mpl/always.hpp> #include <boost/mpl/pair.hpp> #include <boost/mpl/aux_/na_spec.hpp> #include <boost/mpl/aux_/lambda_support.hpp> namespace boost { namespace mpl { template< typename BOOST_MPL_AUX_NA_PARAM(Body) , typename BOOST_MPL_AUX_NA_PARAM(T) > struct switch_ { typedef typename find_if<Body,apply1<first<_1>,T> >::type iter_; typedef typename deref<iter_>::type pair_; typedef typename second<pair_>::type f_; typedef typename apply1<f_,T>::type type; BOOST_MPL_AUX_LAMBDA_SUPPORT(2,switch_,(Body,T)) }; BOOST_MPL_AUX_NA_SPEC(2, switch_) template<typename F> struct default_ : pair<always<true_>, F > {}; template<typename C,typename F> struct case_ : pair<C, F > {}; }} #endif // BOOST_MPL_SWITCH_HPP_INCLUDED
Private
[
?
]
Run code
Submit