Boost logo

Boost :

From: Marshall Clow (mclow.lists_at_[hidden])
Date: 2023-08-05 23:07:34


On Aug 5, 2023, at 5:11 AM, Rainer Deyke via Boost <boost_at_[hidden]> 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.
%


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk