diff --git a/include/boost/iterator/detail/categories.hpp b/include/boost/iterator/detail/categories.hpp index 11efbcd..31fdef9 100644 --- a/include/boost/iterator/detail/categories.hpp +++ b/include/boost/iterator/detail/categories.hpp @@ -13,8 +13,8 @@ #include #include #include -#include -#include +#include +#include #include #if BOOST_WORKAROUND(__MWERKS__, <=0x2407) @@ -431,7 +431,7 @@ namespace boost { template struct is_base_or_same : - mpl::logical_or< is_same< Base, Derived >, + mpl::or_< is_same< Base, Derived >, is_base_and_derived< Base, Derived > > {}; diff --git a/include/boost/iterator/indirect_iterator.hpp b/include/boost/iterator/indirect_iterator.hpp index efff795..fa8e805 100644 --- a/include/boost/iterator/indirect_iterator.hpp +++ b/include/boost/iterator/indirect_iterator.hpp @@ -17,6 +17,7 @@ #ifdef BOOST_NO_MPL_AUX_HAS_XXX # include # include +# include # include #endif @@ -43,12 +44,12 @@ namespace boost template struct has_element_type - : mpl::if_< + { + typedef typename mpl::if_< is_class , aux::has_element_type - , mpl::false_c - >::type - { + , mpl::false_ + >::type type; }; # else template diff --git a/include/boost/iterator/interoperable.hpp b/include/boost/iterator/interoperable.hpp index 377c8c1..7f3422b 100644 --- a/include/boost/iterator/interoperable.hpp +++ b/include/boost/iterator/interoperable.hpp @@ -9,8 +9,8 @@ #ifndef BOOST_INTEROPERABLE_23022003THW_HPP #define BOOST_INTEROPERABLE_23022003THW_HPP -#include -#include +#include +#include #include @@ -36,9 +36,9 @@ namespace boost template struct is_interoperable #if defined(BOOST_NO_IS_CONVERTIBLE) - : mpl::true_c + : mpl::true_ #else - : mpl::logical_or< + : mpl::or_< is_convertible< A, B > , is_convertible< B, A > > #endif diff --git a/include/boost/iterator/iterator_adaptor.hpp b/include/boost/iterator/iterator_adaptor.hpp index c9e13ab..bb11238 100644 --- a/include/boost/iterator/iterator_adaptor.hpp +++ b/include/boost/iterator/iterator_adaptor.hpp @@ -16,8 +16,8 @@ #include #include -#include -#include +#include +#include #include #include @@ -31,16 +31,16 @@ namespace boost { template struct same_category_and_difference - : mpl::logical_and< - is_same< - typename Traits::iterator_category - , typename Other::iterator_category - > - , is_same< - typename Traits::iterator_category - , typename Other::iterator_category - > - > + : mpl::and_< + is_same< + typename Traits::iterator_category + , typename Other::iterator_category + > + , is_same< + typename Traits::iterator_category + , typename Other::iterator_category + > + > {}; @@ -106,7 +106,7 @@ namespace boost # if BOOST_WORKAROUND(_MSC_FULL_VER, BOOST_TESTED_AT(13102292) && BOOST_MSVC > 1300) // For some reason vc7.1 needs us to "cut off" instantiation // of is_convertible in the case where From == To. - mpl::logical_or, is_convertible > + mpl::or_, is_convertible > # else ::boost::is_convertible # endif diff --git a/include/boost/iterator/iterator_categories.hpp b/include/boost/iterator/iterator_categories.hpp index 2f12818..c9a43de 100644 --- a/include/boost/iterator/iterator_categories.hpp +++ b/include/boost/iterator/iterator_categories.hpp @@ -18,11 +18,11 @@ #include #include #include -#include +#include #include -#include -#include -#include +#include +#include +#include #include #if BOOST_WORKAROUND(__MWERKS__, <=0x2407) @@ -99,8 +99,8 @@ namespace boost { // template struct is_new_iterator_tag : - mpl::logical_and< mpl::logical_not< is_input_iterator >, - mpl::logical_not< is_output_iterator > > + mpl::and_< mpl::not_< is_input_iterator >, + mpl::not_< is_output_iterator > > {}; #elif BOOST_WORKAROUND(__GNUC__, == 2 && __GNUC_MINOR__ == 95) \ @@ -120,9 +120,10 @@ namespace boost { struct is_new_iterator_tag : //has_traversal mpl::if_< - is_class - , has_traversal - , mpl::bool_c >::type + is_class + , has_traversal + , mpl::false_ + >::type { }; @@ -202,7 +203,7 @@ namespace boost { template struct cvt_iterator_category : mpl::if_< - mpl::logical_or< + mpl::or_< detail::is_mutable_lvalue_iterator , detail::is_constant_lvalue_iterator > @@ -221,13 +222,13 @@ namespace boost { >::type , typename mpl::if_< - mpl::logical_and< + mpl::and_< detail::is_readable_iterator , detail::is_input_traversal_iterator > , std::input_iterator_tag , typename mpl::if_< - mpl::logical_and< + mpl::and_< detail::is_writable_iterator , detail::is_output_traversal_iterator > @@ -251,14 +252,14 @@ namespace boost { # ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION template struct is_boost_iterator_tag - : mpl::false_c {}; + : mpl::false_ {}; template struct is_boost_iterator_tag > - : mpl::true_c {}; + : mpl::true_ {}; # else template - struct is_boost_iterator_tag_impl + struct is_boost_iterator_tag { typedef char (&yes)[1]; typedef char (&no)[2]; @@ -269,12 +270,8 @@ namespace boost { static T inst; BOOST_STATIC_CONSTANT(bool, value = sizeof(test(inst)) == sizeof(yes)); + typedef mpl::bool_ type; }; - - template - struct is_boost_iterator_tag - : mpl::bool_c::value> - {}; # endif } diff --git a/include/boost/iterator/iterator_facade.hpp b/include/boost/iterator/iterator_facade.hpp index a2cc1f4..d4fbfd2 100644 --- a/include/boost/iterator/iterator_facade.hpp +++ b/include/boost/iterator/iterator_facade.hpp @@ -128,65 +128,95 @@ namespace boost // (broken) implementations. // template < - class Derived - , class Traits + class Derived + , class Traits > class iterator_facade - : detail::std_iterator_from_traits + : public detail::std_iterator_from_traits { - typedef detail::std_iterator_from_traits super_t; + typedef detail::std_iterator_from_traits super_t; public: - // - // CRT interface. There is no simple way to remove this - // from the public interface without template friends - // - typedef Derived derived_t; + // + // CRT interface. There is no simple way to remove this + // from the public interface without template friends + // + typedef Derived derived_t; - Derived& derived() - { - return static_cast(*this); - } + Derived& derived() + { + return static_cast(*this); + } - Derived const& derived() const - { - return static_cast(*this); - } + Derived const& derived() const + { + return static_cast(*this); + } - typedef typename super_t::reference reference; - typedef typename super_t::difference_type difference_type; - typedef typename super_t::pointer pointer; + typedef typename super_t::reference reference; + typedef typename super_t::difference_type difference_type; + typedef typename super_t::pointer pointer; - reference operator*() const - { return iterator_core_access::dereference(this->derived()); } + reference operator*() const + { + return iterator_core_access::dereference(this->derived()); + } - // Needs eventual help for input iterators - pointer operator->() const { return &iterator_core_access::dereference(this->derived()); } + // Needs eventual help for input iterators + pointer operator->() const + { + return &iterator_core_access::dereference(this->derived()); + } - reference operator[](difference_type n) const - { return *(*this + n); } + reference operator[](difference_type n) const + { + return *(*this + n); + } - Derived& operator++() - { iterator_core_access::increment(this->derived()); return this->derived(); } + Derived& operator++() + { + iterator_core_access::increment(this->derived()); + return this->derived(); + } - Derived operator++(int) - { Derived tmp(this->derived()); ++*this; return tmp; } + Derived operator++(int) + { + Derived tmp(this->derived()); + ++*this; + return tmp; + } - Derived& operator--() - { iterator_core_access::decrement(this->derived()); return this->derived(); } + Derived& operator--() + { + iterator_core_access::decrement(this->derived()); + return this->derived(); + } - Derived operator--(int) - { Derived tmp(this->derived()); --*this; return tmp; } + Derived operator--(int) + { + Derived tmp(this->derived()); + --*this; + return tmp; + } - Derived& operator+=(difference_type n) - { iterator_core_access::advance(this->derived(), n); return this->derived(); } + Derived& operator+=(difference_type n) + { + iterator_core_access::advance(this->derived(), n); + return this->derived(); + } - Derived& operator-=(difference_type n) - { iterator_core_access::advance(this->derived(), -n); return this->derived(); } + Derived& operator-=(difference_type n) + { + iterator_core_access::advance(this->derived(), -n); + return this->derived(); + } - Derived operator-(difference_type x) const - { Derived result(this->derived()); return result -= x; } + Derived operator-(difference_type x) const + { + Derived result(this->derived()); + return result -= x; + } }; //