📄 full_lambda.hpp
字号:
// preprocessed version of 'boost/mpl/aux_/full_lambda.hpp' header// see the original for copyright informationnamespace boost {namespace mpl {template< typename T , typename Protect = false_ >struct lambda_impl{ typedef false_ is_le; typedef T type;};template< typename T >struct lambda : lambda_impl< T,false_ >{};namespace aux {template< bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false , bool C5 = false >struct lambda_or : true_{};template<>struct lambda_or< false,false,false,false,false > : false_{};} // namespace auxtemplate< int N, typename Protect >struct lambda_impl< arg<N>,Protect >{ typedef true_ is_le; typedef arg<N> type;};template< typename F , typename Protect >struct lambda_impl< bind0<F> , Protect >{ typedef false_ is_le; typedef bind0< F > type;};template< template< typename P1 > class F , typename T1 >struct lambda< F<T1> > : lambda_impl< F<T1>,true_ >{};namespace aux {template< typename IsLE, typename Protect , template< typename P1 > class F , typename L1 >struct le_result1{ typedef F< typename L1::type > type;};template< template< typename P1 > class F , typename L1 >struct le_result1< true_,false_,F,L1 >{ typedef bind1< quote1<F> , typename L1::type > type;};template< template< typename P1 > class F , typename L1 >struct le_result1< true_,true_,F,L1 >{ typedef protect< bind1< quote1<F> , typename L1::type > > type;};} // namespace auxtemplate< template< typename P1 > class F , typename T1 , typename Protect >struct lambda_impl< F<T1>, Protect >{ typedef lambda_impl<T1> l1; typedef aux::lambda_or< l1::is_le::value > is_le; typedef typename aux::le_result1< typename is_le::type , Protect , F , l1 >::type type;};template< typename F, typename T1 , typename Protect >struct lambda_impl< bind1< F,T1 > , Protect >{ typedef false_ is_le; typedef bind1< F , T1 > type;};template< template< typename P1, typename P2 > class F , typename T1, typename T2 >struct lambda< F<T1,T2> > : lambda_impl< F<T1,T2>,true_ >{};namespace aux {template< typename IsLE, typename Protect , template< typename P1, typename P2 > class F , typename L1, typename L2 >struct le_result2{ typedef F< typename L1::type, typename L2::type > type;};template< template< typename P1, typename P2 > class F , typename L1, typename L2 >struct le_result2< true_,false_,F,L1,L2 >{ typedef bind2< quote2<F> , typename L1::type, typename L2::type > type;};template< template< typename P1, typename P2 > class F , typename L1, typename L2 >struct le_result2< true_,true_,F,L1,L2 >{ typedef protect< bind2< quote2<F> , typename L1::type, typename L2::type > > type;};} // namespace auxtemplate< template< typename P1, typename P2 > class F , typename T1, typename T2 , typename Protect >struct lambda_impl< F< T1,T2 >, Protect >{ typedef lambda_impl<T1> l1; typedef lambda_impl<T2> l2; typedef aux::lambda_or< l1::is_le::value, l2::is_le::value > is_le; typedef typename aux::le_result2< typename is_le::type , Protect , F , l1, l2 >::type type;};template< typename F, typename T1, typename T2 , typename Protect >struct lambda_impl< bind2< F,T1,T2 > , Protect >{ typedef false_ is_le; typedef bind2< F , T1, T2 > type;};template< template< typename P1, typename P2, typename P3 > class F , typename T1, typename T2, typename T3 >struct lambda< F<T1,T2,T3> > : lambda_impl< F<T1,T2,T3>,true_ >{};namespace aux {template< typename IsLE, typename Protect , template< typename P1, typename P2, typename P3 > class F , typename L1, typename L2, typename L3 >struct le_result3{ typedef F< typename L1::type, typename L2::type, typename L3::type > type;};template< template< typename P1, typename P2, typename P3 > class F , typename L1, typename L2, typename L3 >struct le_result3< true_,false_,F,L1,L2,L3 >{ typedef bind3< quote3<F> , typename L1::type, typename L2::type, typename L3::type > type;};template< template< typename P1, typename P2, typename P3 > class F , typename L1, typename L2, typename L3 >struct le_result3< true_,true_,F,L1,L2,L3 >{ typedef protect< bind3< quote3<F> , typename L1::type, typename L2::type, typename L3::type > > type;};} // namespace auxtemplate< template< typename P1, typename P2, typename P3 > class F , typename T1, typename T2, typename T3 , typename Protect >struct lambda_impl< F< T1,T2,T3 >, Protect >{ typedef lambda_impl<T1> l1; typedef lambda_impl<T2> l2; typedef lambda_impl<T3> l3; typedef aux::lambda_or< l1::is_le::value, l2::is_le::value, l3::is_le::value > is_le; typedef typename aux::le_result3< typename is_le::type , Protect , F , l1, l2, l3 >::type type;};template< typename F, typename T1, typename T2, typename T3 , typename Protect >struct lambda_impl< bind3< F,T1,T2,T3 > , Protect >{ typedef false_ is_le; typedef bind3< F , T1, T2, T3 > type;};template< template< typename P1, typename P2, typename P3, typename P4 > class F , typename T1, typename T2, typename T3, typename T4 >struct lambda< F<T1,T2,T3,T4> > : lambda_impl< F<T1,T2,T3,T4>,true_ >{};namespace aux {template< typename IsLE, typename Protect , template< typename P1, typename P2, typename P3, typename P4 > class F , typename L1, typename L2, typename L3, typename L4 >struct le_result4{ typedef F< typename L1::type, typename L2::type, typename L3::type , typename L4::type > type;};template< template< typename P1, typename P2, typename P3, typename P4 > class F , typename L1, typename L2, typename L3, typename L4 >struct le_result4< true_,false_,F,L1,L2,L3,L4 >{ typedef bind4< quote4<F> , typename L1::type, typename L2::type, typename L3::type , typename L4::type > type;};template< template< typename P1, typename P2, typename P3, typename P4 > class F , typename L1, typename L2, typename L3, typename L4 >struct le_result4< true_,true_,F,L1,L2,L3,L4 >{ typedef protect< bind4< quote4<F> , typename L1::type, typename L2::type, typename L3::type , typename L4::type > > type;};} // namespace auxtemplate< template< typename P1, typename P2, typename P3, typename P4 > class F , typename T1, typename T2, typename T3, typename T4 , typename Protect >struct lambda_impl< F< T1,T2,T3,T4 >, Protect >{ typedef lambda_impl<T1> l1; typedef lambda_impl<T2> l2; typedef lambda_impl<T3> l3; typedef lambda_impl<T4> l4; typedef aux::lambda_or< l1::is_le::value, l2::is_le::value, l3::is_le::value , l4::is_le::value > is_le; typedef typename aux::le_result4< typename is_le::type , Protect , F , l1, l2, l3, l4 >::type type;};template< typename F, typename T1, typename T2, typename T3, typename T4 , typename Protect >struct lambda_impl< bind4< F,T1,T2,T3,T4 > , Protect >{ typedef false_ is_le; typedef bind4< F , T1, T2, T3, T4 > type;};template< template< typename P1, typename P2, typename P3, typename P4 , typename P5 > class F , typename T1, typename T2, typename T3, typename T4, typename T5 >struct lambda< F<T1,T2,T3,T4,T5> > : lambda_impl< F<T1,T2,T3,T4,T5>,true_ >{};namespace aux {template< typename IsLE, typename Protect , template< typename P1, typename P2, typename P3, typename P4, typename P5 > class F , typename L1, typename L2, typename L3, typename L4, typename L5 >struct le_result5{ typedef F< typename L1::type, typename L2::type, typename L3::type , typename L4::type, typename L5::type > type;};template< template< typename P1, typename P2, typename P3, typename P4 , typename P5 > class F , typename L1, typename L2, typename L3, typename L4, typename L5 >struct le_result5< true_,false_,F,L1,L2,L3,L4,L5 >{ typedef bind5< quote5<F> , typename L1::type, typename L2::type, typename L3::type , typename L4::type, typename L5::type > type;};template< template< typename P1, typename P2, typename P3, typename P4 , typename P5 > class F , typename L1, typename L2, typename L3, typename L4, typename L5 >struct le_result5< true_,true_,F,L1,L2,L3,L4,L5 >{ typedef protect< bind5< quote5<F> , typename L1::type, typename L2::type, typename L3::type , typename L4::type, typename L5::type > > type;};} // namespace auxtemplate< template< typename P1, typename P2, typename P3, typename P4 , typename P5 > class F , typename T1, typename T2, typename T3, typename T4, typename T5 , typename Protect >struct lambda_impl< F< T1,T2,T3,T4,T5 >, Protect >{ typedef lambda_impl<T1> l1; typedef lambda_impl<T2> l2; typedef lambda_impl<T3> l3; typedef lambda_impl<T4> l4; typedef lambda_impl<T5> l5; typedef aux::lambda_or< l1::is_le::value, l2::is_le::value, l3::is_le::value , l4::is_le::value, l5::is_le::value > is_le; typedef typename aux::le_result5< typename is_le::type , Protect , F , l1, l2, l3, l4, l5 >::type type;};template< typename F, typename T1, typename T2, typename T3, typename T4 , typename T5 , typename Protect >struct lambda_impl< bind5< F,T1,T2,T3,T4,T5 > , Protect >{ typedef false_ is_le; typedef bind5< F , T1, T2, T3, T4, T5 > type;};// special case for 'protect'template< typename T, typename Protect >struct lambda_impl< protect<T>,Protect >{ typedef false_ is_le; typedef protect<T> type;};// specializations for main 'bind', 'bind1st' and 'bind2nd' formstemplate< typename F, typename T1, typename T2, typename T3, typename T4 , typename T5 , typename Protect >struct lambda_impl< bind< F,T1,T2,T3,T4,T5 > , Protect >{ typedef false_ is_le; typedef bind< F,T1,T2,T3,T4,T5 > type;};template< typename F, typename T , typename Protect >struct lambda_impl< bind1st<F,T>,Protect >{ typedef false_ is_le; typedef bind1st< F,T > type;};template< typename F, typename T , typename Protect >struct lambda_impl< bind2nd<F,T>,Protect >{ typedef false_ is_le; typedef bind2nd< F,T > type;};} // namespace mpl} // namespace boost
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -