-\r
-// Copyright Aleksey Gurtovoy 2000-2004\r
-//\r
-// Distributed under the Boost Software License, Version 1.0. \r
-// (See accompanying file LICENSE_1_0.txt or copy at \r
-// http://www.boost.org/LICENSE_1_0.txt)\r
-//\r
-\r
-// *Preprocessed* version of the main "lambda_no_ctps.hpp" header\r
-// -- DO NOT modify by hand!\r
-\r
-namespace boost { namespace mpl {\r
-\r
-namespace aux {\r
-\r
-template<\r
- bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false\r
- , bool C5 = false\r
- >\r
-struct lambda_or\r
- : true_\r
-{\r
-};\r
-\r
-template<>\r
-struct lambda_or< false,false,false,false,false >\r
- : false_\r
-{\r
-};\r
-\r
-template< typename Arity > struct lambda_impl\r
-{\r
- template< typename T, typename Tag, typename Protect > struct result_\r
- {\r
- typedef T type;\r
- typedef is_placeholder<T> is_le;\r
- };\r
-};\r
-\r
-template<> struct lambda_impl< int_<1> >\r
-{\r
- template< typename F, typename Tag, typename Protect > struct result_\r
- {\r
- typedef lambda< typename F::arg1, Tag, false_ > l1;\r
- typedef typename l1::is_le is_le1;\r
- typedef aux::lambda_or<\r
- BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value\r
- > is_le;\r
-\r
- typedef bind1<\r
- typename F::rebind\r
- , typename l1::type\r
- > bind_;\r
-\r
- typedef typename if_<\r
- is_le\r
- , if_< Protect, mpl::protect<bind_>, bind_ >\r
- , identity<F>\r
- >::type type_;\r
-\r
- typedef typename type_::type type;\r
- };\r
-};\r
-\r
-template<> struct lambda_impl< int_<2> >\r
-{\r
- template< typename F, typename Tag, typename Protect > struct result_\r
- {\r
- typedef lambda< typename F::arg1, Tag, false_ > l1;\r
- typedef lambda< typename F::arg2, Tag, false_ > l2;\r
- \r
- typedef typename l1::is_le is_le1;\r
- typedef typename l2::is_le is_le2;\r
- \r
-\r
- typedef aux::lambda_or<\r
- BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value\r
- > is_le;\r
-\r
- typedef bind2<\r
- typename F::rebind\r
- , typename l1::type, typename l2::type\r
- > bind_;\r
-\r
- typedef typename if_<\r
- is_le\r
- , if_< Protect, mpl::protect<bind_>, bind_ >\r
- , identity<F>\r
- >::type type_;\r
-\r
- typedef typename type_::type type;\r
- };\r
-};\r
-\r
-template<> struct lambda_impl< int_<3> >\r
-{\r
- template< typename F, typename Tag, typename Protect > struct result_\r
- {\r
- typedef lambda< typename F::arg1, Tag, false_ > l1;\r
- typedef lambda< typename F::arg2, Tag, false_ > l2;\r
- typedef lambda< typename F::arg3, Tag, false_ > l3;\r
- \r
- typedef typename l1::is_le is_le1;\r
- typedef typename l2::is_le is_le2;\r
- typedef typename l3::is_le is_le3;\r
- \r
-\r
- typedef aux::lambda_or<\r
- BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value\r
- > is_le;\r
-\r
- typedef bind3<\r
- typename F::rebind\r
- , typename l1::type, typename l2::type, typename l3::type\r
- > bind_;\r
-\r
- typedef typename if_<\r
- is_le\r
- , if_< Protect, mpl::protect<bind_>, bind_ >\r
- , identity<F>\r
- >::type type_;\r
-\r
- typedef typename type_::type type;\r
- };\r
-};\r
-\r
-template<> struct lambda_impl< int_<4> >\r
-{\r
- template< typename F, typename Tag, typename Protect > struct result_\r
- {\r
- typedef lambda< typename F::arg1, Tag, false_ > l1;\r
- typedef lambda< typename F::arg2, Tag, false_ > l2;\r
- typedef lambda< typename F::arg3, Tag, false_ > l3;\r
- typedef lambda< typename F::arg4, Tag, false_ > l4;\r
- \r
- typedef typename l1::is_le is_le1;\r
- typedef typename l2::is_le is_le2;\r
- typedef typename l3::is_le is_le3;\r
- typedef typename l4::is_le is_le4;\r
- \r
-\r
- typedef aux::lambda_or<\r
- BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value\r
- > is_le;\r
-\r
- typedef bind4<\r
- typename F::rebind\r
- , typename l1::type, typename l2::type, typename l3::type\r
- , typename l4::type\r
- > bind_;\r
-\r
- typedef typename if_<\r
- is_le\r
- , if_< Protect, mpl::protect<bind_>, bind_ >\r
- , identity<F>\r
- >::type type_;\r
-\r
- typedef typename type_::type type;\r
- };\r
-};\r
-\r
-template<> struct lambda_impl< int_<5> >\r
-{\r
- template< typename F, typename Tag, typename Protect > struct result_\r
- {\r
- typedef lambda< typename F::arg1, Tag, false_ > l1;\r
- typedef lambda< typename F::arg2, Tag, false_ > l2;\r
- typedef lambda< typename F::arg3, Tag, false_ > l3;\r
- typedef lambda< typename F::arg4, Tag, false_ > l4;\r
- typedef lambda< typename F::arg5, Tag, false_ > l5;\r
- \r
- typedef typename l1::is_le is_le1;\r
- typedef typename l2::is_le is_le2;\r
- typedef typename l3::is_le is_le3;\r
- typedef typename l4::is_le is_le4;\r
- typedef typename l5::is_le is_le5;\r
- \r
-\r
- typedef aux::lambda_or<\r
- BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value\r
- > is_le;\r
-\r
- typedef bind5<\r
- typename F::rebind\r
- , typename l1::type, typename l2::type, typename l3::type\r
- , typename l4::type, typename l5::type\r
- > bind_;\r
-\r
- typedef typename if_<\r
- is_le\r
- , if_< Protect, mpl::protect<bind_>, bind_ >\r
- , identity<F>\r
- >::type type_;\r
-\r
- typedef typename type_::type type;\r
- };\r
-};\r
-\r
-} // namespace aux\r
-\r
-template<\r
- typename T\r
- , typename Tag\r
- , typename Protect\r
- >\r
-struct lambda\r
-{\r
- /// Metafunction forwarding confuses MSVC 6.x\r
- typedef typename aux::template_arity<T>::type arity_;\r
- typedef typename aux::lambda_impl<arity_>\r
- ::template result_< T,Tag,Protect > l_;\r
-\r
- typedef typename l_::type type;\r
- typedef typename l_::is_le is_le;\r
- BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))\r
-};\r
-\r
-BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)\r
-\r
-template<\r
- typename T\r
- >\r
-struct is_lambda_expression\r
- : lambda<T>::is_le\r
-{\r
-};\r
-\r
-}}\r
-\r
+
+// Copyright Aleksey Gurtovoy 2000-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)
+//
+
+// *Preprocessed* version of the main "lambda_no_ctps.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+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_
+{
+};
+
+template< typename Arity > struct lambda_impl
+{
+ template< typename T, typename Tag, typename Protect > struct result_
+ {
+ typedef T type;
+ typedef is_placeholder<T> is_le;
+ };
+};
+
+template<> struct lambda_impl< int_<1> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef typename l1::is_le is_le1;
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
+ > is_le;
+
+ typedef bind1<
+ typename F::rebind
+ , typename l1::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<2> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
+ > is_le;
+
+ typedef bind2<
+ typename F::rebind
+ , typename l1::type, typename l2::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<3> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
+ > is_le;
+
+ typedef bind3<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<4> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
+ > is_le;
+
+ typedef bind4<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+template<> struct lambda_impl< int_<5> >
+{
+ template< typename F, typename Tag, typename Protect > struct result_
+ {
+ typedef lambda< typename F::arg1, Tag, false_ > l1;
+ typedef lambda< typename F::arg2, Tag, false_ > l2;
+ typedef lambda< typename F::arg3, Tag, false_ > l3;
+ typedef lambda< typename F::arg4, Tag, false_ > l4;
+ typedef lambda< typename F::arg5, Tag, false_ > l5;
+
+ typedef typename l1::is_le is_le1;
+ typedef typename l2::is_le is_le2;
+ typedef typename l3::is_le is_le3;
+ typedef typename l4::is_le is_le4;
+ typedef typename l5::is_le is_le5;
+
+
+ typedef aux::lambda_or<
+ BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
+ > is_le;
+
+ typedef bind5<
+ typename F::rebind
+ , typename l1::type, typename l2::type, typename l3::type
+ , typename l4::type, typename l5::type
+ > bind_;
+
+ typedef typename if_<
+ is_le
+ , if_< Protect, mpl::protect<bind_>, bind_ >
+ , identity<F>
+ >::type type_;
+
+ typedef typename type_::type type;
+ };
+};
+
+} // namespace aux
+
+template<
+ typename T
+ , typename Tag
+ , typename Protect
+ >
+struct lambda
+{
+ /// Metafunction forwarding confuses MSVC 6.x
+ typedef typename aux::template_arity<T>::type arity_;
+ typedef typename aux::lambda_impl<arity_>
+ ::template result_< T,Tag,Protect > l_;
+
+ typedef typename l_::type type;
+ typedef typename l_::is_le is_le;
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
+};
+
+BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
+
+template<
+ typename T
+ >
+struct is_lambda_expression
+ : lambda<T>::is_le
+{
+};
+
+}}
+