diff --git a/include/boost/iterator/iterator_categories.hpp b/include/boost/iterator/iterator_categories.hpp index 23724b1..cbf1f2f 100644 --- a/include/boost/iterator/iterator_categories.hpp +++ b/include/boost/iterator/iterator_categories.hpp @@ -29,6 +29,9 @@ #include #include #include +#ifdef BOOST_MPL_NO_FULL_LAMBDA_SUPPORT +# include +#endif #include @@ -340,6 +343,29 @@ namespace boost { { }; +# ifdef BOOST_MPL_NO_FULL_LAMBDA_SUPPORT + // Hack because BOOST_MPL_AUX_LAMBDA_SUPPORT doesn't seem to work + // out well. Instantiating the nested apply template also + // requires instantiating iterator_traits on the + // placeholder. Instead we just specialize it as a metafunction + // class. +template <> + struct access_category + { + template + struct apply : access_category + {}; + }; + + template <> + struct traversal_category + { + template + struct apply : traversal_category + {}; + }; +# endif + # if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) template