diff --git a/include/boost/iterator/iterator_facade.hpp b/include/boost/iterator/iterator_facade.hpp index 9f1c25a..5351e7e 100644 --- a/include/boost/iterator/iterator_facade.hpp +++ b/include/boost/iterator/iterator_facade.hpp @@ -934,19 +934,23 @@ namespace iterators { # define BOOST_ITERATOR_FACADE_INTEROP_RANDOM_ACCESS(op, result_type, return_prefix, base_op) \ BOOST_ITERATOR_FACADE_INTEROP_RANDOM_ACCESS_HEAD(inline, op, result_type) \ - { \ - /* For those compilers that do not support enable_if */ \ - static_assert( \ - is_interoperable::value && \ - boost::iterators::detail::is_traversal_at_least::type, random_access_traversal_tag>::value && \ - boost::iterators::detail::is_traversal_at_least::type, random_access_traversal_tag>::value, \ - "Derived1 & Derived2 types must be interoperable and must both have random_access_traversal_tag." \ - ); \ - return_prefix iterator_core_access::base_op( \ - *static_cast(&lhs) \ - , *static_cast(&rhs) \ - , BOOST_ITERATOR_CONVERTIBLE(Derived2,Derived1) \ - ); \ + { \ + using boost::iterators::detail::is_traversal_at_least; \ + using Derived1IterCat = typename iterator_category::type; \ + using Derived2IterCat = typename iterator_category::type; \ + /* For those compilers that do not support enable_if */ \ + static_assert( \ + is_interoperable::value && \ + is_traversal_at_least::value && \ + is_traversal_at_least::value, \ + "Derived1 & Derived2 types must be interoperable and must both have " \ + "random_access_traversal_tag." \ + ); \ + return_prefix iterator_core_access::base_op( \ + *static_cast(&lhs) \ + , *static_cast(&rhs) \ + , BOOST_ITERATOR_CONVERTIBLE(Derived2,Derived1) \ + ); \ } # define BOOST_ITERATOR_FACADE_RANDOM_ACCESS_RELATION(op, return_prefix, base_op) \