
On Aug 5, 2023, at 5:11 AM, Rainer Deyke via Boost <boost@lists.boost.org> wrote:
On 03.08.23 16:33, Marshall Clow via Boost wrote:
As always, the release managers would appreciate it if you download the candidate of your choice and give building it a try. Please report both success and failure, and anything else that is noteworthy. -- The Release managers
Sorry for the very late report, but I think I found a serious regression in either Boost.Stl_interfaces or in Boost.Range. Some iterators generated by Boost.Stl_interfaces are not accepted by Boost.Range. This is a regression from Boost 1.82. Minimal example program, with basic_input_iter taken directly from a Boost.Stl_interfaces test:
I have reproduced this with Apple clang version 14.0.3 (clang-1403.0.22.14.1) on ARM64, And have confirmed that this compiles w/o error with boost 1.82.0 on the same configuration. Does anyone have any ideas about what is going wrong here, and how to fix it? — Marshall % clang++ -I $BOOST boost.cpp -std=c++20 -c In file included from boost.cpp:2: In file included from /Users/marshall/Sources/Boost/main/boost/range/iterator_range.hpp:13: In file included from /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:27: In file included from /Users/marshall/Sources/Boost/main/boost/iterator/iterator_facade.hpp:13: /Users/marshall/Sources/Boost/main/boost/iterator/iterator_categories.hpp:120:50: error: no type named 'iterator_category' in 'std::iterator_traits<basic_input_iter>' typename std::iterator_traits<Iterator>::iterator_category ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~ /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:157:32: note: in instantiation of template class 'boost::iterators::iterator_traversal<basic_input_iter>' requested here BOOST_DEDUCED_TYPENAME iterator_traversal<IteratorT>::type ^ /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:437:67: note: in instantiation of template class 'boost::iterator_range_detail::pure_iterator_traversal<basic_input_iter>' requested here BOOST_DEDUCED_TYPENAME iterator_range_detail::pure_iterator_traversal<IteratorT>::type ^ boost.cpp:40:9: note: in instantiation of template class 'boost::iterator_range<basic_input_iter>' requested here return boost::make_iterator_range( ^ In file included from boost.cpp:2: In file included from /Users/marshall/Sources/Boost/main/boost/range/iterator_range.hpp:13: /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:161:30: error: no matching function for call to 'test_traversal_tag' traversal_i = sizeof(iterator_range_detail::test_traversal_tag((traversal_t()))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /Users/marshall/Sources/Boost/main/boost/config/detail/suffix.hpp:410:72: note: expanded from macro 'BOOST_STATIC_CONSTANT' # define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment ^~~~~~~~~~ /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:437:67: note: in instantiation of template class 'boost::iterator_range_detail::pure_iterator_traversal<basic_input_iter>' requested here BOOST_DEDUCED_TYPENAME iterator_range_detail::pure_iterator_traversal<IteratorT>::type ^ boost.cpp:40:9: note: in instantiation of template class 'boost::iterator_range<basic_input_iter>' requested here return boost::make_iterator_range( ^ /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:131:17: note: candidate function not viable: no known conversion from 'boost::iterator_range_detail::pure_iterator_traversal<basic_input_iter>::traversal_t' (aka 'int') to 'boost::incrementable_traversal_tag' for 1st argument incrementable_t test_traversal_tag(boost::incrementable_traversal_tag); ^ /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:132:17: note: candidate function not viable: no known conversion from 'boost::iterator_range_detail::pure_iterator_traversal<basic_input_iter>::traversal_t' (aka 'int') to 'boost::bidirectional_traversal_tag' for 1st argument bidirectional_t test_traversal_tag(boost::bidirectional_traversal_tag); ^ /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:133:17: note: candidate function not viable: no known conversion from 'boost::iterator_range_detail::pure_iterator_traversal<basic_input_iter>::traversal_t' (aka 'int') to 'boost::random_access_traversal_tag' for 1st argument random_access_t test_traversal_tag(boost::random_access_traversal_tag); ^ /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:484:19: error: type 'boost::iterator_range<basic_input_iter>::base_type' (aka 'iterator_range_base<basic_input_iter, typename pure_iterator_traversal_impl<traversal_i>::type>') is not a direct or virtual base of 'boost::iterator_range<basic_input_iter>' : base_type(first, last) ^~~~~~~~~ /Users/marshall/Sources/Boost/main/boost/range/iterator_range_core.hpp:758:20: note: in instantiation of function template specialization 'boost::iterator_range<basic_input_iter>::iterator_range<basic_input_iter>' requested here return iterator_range<IteratorT>( Begin, End ); ^ boost.cpp:40:16: note: in instantiation of function template specialization 'boost::make_iterator_range<basic_input_iter>' requested here return boost::make_iterator_range( ^ 3 errors generated. %