From 6196a6e59119bb53c672f95b5f7737b8e5e0fdb9 Mon Sep 17 00:00:00 2001 From: Aleksey Gurtovoy Date: Thu, 2 Sep 2004 15:41:37 +0000 Subject: [PATCH] merge new MPL version from 'mplbook' branch [SVN r24874] --- include/boost/iterator/counting_iterator.hpp | 6 ++--- .../detail/facade_iterator_category.hpp | 10 +++---- .../iterator/detail/minimum_category.hpp | 2 ++ include/boost/iterator/indirect_iterator.hpp | 8 +++--- include/boost/iterator/iterator_adaptor.hpp | 6 ++--- .../boost/iterator/iterator_archetypes.hpp | 8 +++--- .../boost/iterator/iterator_categories.hpp | 26 +++++++++---------- include/boost/iterator/iterator_concepts.hpp | 1 + include/boost/iterator/iterator_facade.hpp | 8 +++--- include/boost/iterator/zip_iterator.hpp | 10 +++---- include/boost/pointee.hpp | 4 +-- test/indirect_iterator_test.cpp | 2 +- 12 files changed, 47 insertions(+), 44 deletions(-) diff --git a/include/boost/iterator/counting_iterator.hpp b/include/boost/iterator/counting_iterator.hpp index e7d3370..ce597d6 100644 --- a/include/boost/iterator/counting_iterator.hpp +++ b/include/boost/iterator/counting_iterator.hpp @@ -10,7 +10,7 @@ # include # include # include -# include +# include namespace boost { @@ -83,7 +83,7 @@ namespace detail { typedef typename detail::ia_dflt_help< CategoryOrTraversal - , mpl::apply_if< + , mpl::eval_if< is_numeric , mpl::identity , iterator_traversal @@ -92,7 +92,7 @@ namespace detail typedef typename detail::ia_dflt_help< Difference - , mpl::apply_if< + , mpl::eval_if< is_numeric , numeric_difference , iterator_difference diff --git a/include/boost/iterator/detail/facade_iterator_category.hpp b/include/boost/iterator/detail/facade_iterator_category.hpp index 5bee4b8..463e001 100755 --- a/include/boost/iterator/detail/facade_iterator_category.hpp +++ b/include/boost/iterator/detail/facade_iterator_category.hpp @@ -11,7 +11,7 @@ # include // used in iterator_tag inheritance logic # include # include -# include +# include # include # include @@ -86,12 +86,12 @@ struct iterator_writability_disabled // template struct iterator_facade_default_category - : mpl::apply_if< + : mpl::eval_if< mpl::and_< is_reference , is_convertible > - , mpl::apply_if< + , mpl::eval_if< is_convertible , mpl::identity , mpl::if_< @@ -100,7 +100,7 @@ struct iterator_facade_default_category , std::forward_iterator_tag > > - , typename mpl::apply_if< + , typename mpl::eval_if< mpl::and_< is_convertible @@ -194,7 +194,7 @@ struct facade_iterator_category_impl // template struct facade_iterator_category - : mpl::apply_if< + : mpl::eval_if< is_iterator_category , mpl::identity // old-style categories are fine as-is , facade_iterator_category_impl diff --git a/include/boost/iterator/detail/minimum_category.hpp b/include/boost/iterator/detail/minimum_category.hpp index b82a9e6..74cef63 100755 --- a/include/boost/iterator/detail/minimum_category.hpp +++ b/include/boost/iterator/detail/minimum_category.hpp @@ -99,6 +99,8 @@ struct minimum_category template struct apply : minimum_category {}; + + BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2,minimum_category,(mpl::_1,mpl::_2)) }; # if BOOST_WORKAROUND(BOOST_MSVC, == 1200) // ETI workaround diff --git a/include/boost/iterator/indirect_iterator.hpp b/include/boost/iterator/indirect_iterator.hpp index 45afc3c..b90bd6f 100644 --- a/include/boost/iterator/indirect_iterator.hpp +++ b/include/boost/iterator/indirect_iterator.hpp @@ -21,11 +21,11 @@ #include #include -#include +#include #include -#include +#include -#ifdef BOOST_MPL_NO_AUX_HAS_XXX +#ifdef BOOST_MPL_CFG_NO_HAS_XXX # include # include # include @@ -55,7 +55,7 @@ namespace boost , Category , typename ia_dflt_help< Reference - , mpl::apply_if< + , mpl::eval_if< is_same , indirect_reference , add_reference diff --git a/include/boost/iterator/iterator_adaptor.hpp b/include/boost/iterator/iterator_adaptor.hpp index a9640cb..eabacde 100644 --- a/include/boost/iterator/iterator_adaptor.hpp +++ b/include/boost/iterator/iterator_adaptor.hpp @@ -159,7 +159,7 @@ namespace boost // DefaultNullaryFn, otherwise return T. template struct ia_dflt_help - : mpl::apply_if< + : mpl::eval_if< is_same , DefaultNullaryFn , mpl::identity @@ -185,7 +185,7 @@ namespace boost # ifdef BOOST_ITERATOR_REF_CONSTNESS_KILLS_WRITABILITY , typename detail::ia_dflt_help< Value - , mpl::apply_if< + , mpl::eval_if< is_same , iterator_value , remove_reference @@ -204,7 +204,7 @@ namespace boost , typename detail::ia_dflt_help< Reference - , mpl::apply_if< + , mpl::eval_if< is_same , iterator_reference , add_reference diff --git a/include/boost/iterator/iterator_archetypes.hpp b/include/boost/iterator/iterator_archetypes.hpp index a628c80..8c09328 100644 --- a/include/boost/iterator/iterator_archetypes.hpp +++ b/include/boost/iterator/iterator_archetypes.hpp @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include @@ -120,9 +120,9 @@ namespace detail template struct operator_brackets : mpl::aux::msvc_eti_base< - typename mpl::apply_if< + typename mpl::eval_if< is_convertible - , mpl::apply_if< + , mpl::eval_if< iterator_archetypes::has_access< AccessCategory , iterator_archetypes::writable_iterator_t @@ -417,7 +417,7 @@ namespace detail typedef typename detail::facade_iterator_category< TraversalCategory - , typename mpl::apply_if< + , typename mpl::eval_if< iterator_archetypes::has_access< AccessCategory, iterator_archetypes::writable_iterator_t > diff --git a/include/boost/iterator/iterator_categories.hpp b/include/boost/iterator/iterator_categories.hpp index 1d2eab0..085936f 100644 --- a/include/boost/iterator/iterator_categories.hpp +++ b/include/boost/iterator/iterator_categories.hpp @@ -12,7 +12,7 @@ # include -# include +# include # include # include # include @@ -74,19 +74,19 @@ namespace detail // template struct old_category_to_traversal - : mpl::apply_if< + : mpl::eval_if< is_convertible , mpl::identity - , mpl::apply_if< + , mpl::eval_if< is_convertible , mpl::identity - , mpl::apply_if< + , mpl::eval_if< is_convertible , mpl::identity - , mpl::apply_if< + , mpl::eval_if< is_convertible , mpl::identity - , mpl::apply_if< + , mpl::eval_if< is_convertible , mpl::identity , void @@ -107,19 +107,19 @@ namespace detail template struct pure_traversal_tag - : mpl::apply_if< + : mpl::eval_if< is_convertible , mpl::identity - , mpl::apply_if< + , mpl::eval_if< is_convertible , mpl::identity - , mpl::apply_if< + , mpl::eval_if< is_convertible , mpl::identity - , mpl::apply_if< + , mpl::eval_if< is_convertible , mpl::identity - , mpl::apply_if< + , mpl::eval_if< is_convertible , mpl::identity , void @@ -147,7 +147,7 @@ namespace detail // template struct iterator_category_to_traversal - : mpl::apply_if< // if already convertible to a traversal tag, we're done. + : mpl::eval_if< // if already convertible to a traversal tag, we're done. is_convertible , mpl::identity , detail::old_category_to_traversal @@ -162,7 +162,7 @@ struct iterator_traversal > {}; -# ifdef BOOST_MPL_NO_FULL_LAMBDA_SUPPORT +# ifdef BOOST_MPL_CFG_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 diff --git a/include/boost/iterator/iterator_concepts.hpp b/include/boost/iterator/iterator_concepts.hpp index cf68f6b..4c27964 100644 --- a/include/boost/iterator/iterator_concepts.hpp +++ b/include/boost/iterator/iterator_concepts.hpp @@ -31,6 +31,7 @@ // Use boost/limits to work around missing limits headers on some compilers #include +#include #include diff --git a/include/boost/iterator/iterator_facade.hpp b/include/boost/iterator/iterator_facade.hpp index ca60133..3b40db2 100644 --- a/include/boost/iterator/iterator_facade.hpp +++ b/include/boost/iterator/iterator_facade.hpp @@ -24,7 +24,7 @@ #include #include -#include +#include #include #include #include @@ -104,7 +104,7 @@ namespace boost typedef typename remove_const::type value_type; - typedef typename mpl::apply_if< + typedef typename mpl::eval_if< detail::iterator_writability_disabled , add_pointer::type> , add_pointer @@ -267,7 +267,7 @@ namespace boost // *r also returns a proxy. template struct postfix_increment_result - : mpl::apply_if< + : mpl::eval_if< mpl::and_< // A proxy is only needed for readable iterators is_convertible @@ -416,7 +416,7 @@ namespace boost , typename I2::difference_type > # else - mpl::apply_if< + mpl::eval_if< is_convertible , iterator_difference , iterator_difference diff --git a/include/boost/iterator/zip_iterator.hpp b/include/boost/iterator/zip_iterator.hpp index d3f800c..72ab9a3 100755 --- a/include/boost/iterator/zip_iterator.hpp +++ b/include/boost/iterator/zip_iterator.hpp @@ -35,7 +35,7 @@ #include #include #include -#include +#include #include #include #include @@ -140,7 +140,7 @@ namespace boost { template struct tuple_meta_transform - : mpl::apply_if< + : mpl::eval_if< boost::is_same , mpl::identity , tuple_meta_transform_impl @@ -179,7 +179,7 @@ namespace boost { , typename StartType > struct tuple_meta_accumulate - : mpl::apply_if< + : mpl::eval_if< #if BOOST_WORKAROUND(BOOST_MSVC, == 1200) mpl::or_< #endif @@ -337,7 +337,7 @@ namespace boost { typedef typename iterator_traits::reference type; }; -#ifdef BOOST_MPL_NO_FULL_LAMBDA_SUPPORT +#ifdef BOOST_MPL_CFG_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 @@ -400,7 +400,7 @@ namespace boost { { }; -# ifdef BOOST_MPL_NO_FULL_LAMBDA_SUPPORT +# ifdef BOOST_MPL_CFG_NO_FULL_LAMBDA_SUPPORT // Hack because BOOST_MPL_AUX_LAMBDA_SUPPORT doesn't seem to work // out well. In this case I think it's an MPL bug template<> diff --git a/include/boost/pointee.hpp b/include/boost/pointee.hpp index 4f17bfd..bb6d1f7 100755 --- a/include/boost/pointee.hpp +++ b/include/boost/pointee.hpp @@ -12,7 +12,7 @@ # include # include # include -# include +# include namespace boost { @@ -55,7 +55,7 @@ namespace detail template struct pointee - : mpl::apply_if< + : mpl::eval_if< detail::is_incrementable

, detail::iterator_pointee

, detail::smart_ptr_pointee

diff --git a/test/indirect_iterator_test.cpp b/test/indirect_iterator_test.cpp index 5d4d566..e79cf12 100644 --- a/test/indirect_iterator_test.cpp +++ b/test/indirect_iterator_test.cpp @@ -25,7 +25,7 @@ #include #include -#include +#include #include #include