$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Rainer Deyke (rdeyke_at_[hidden])
Date: 2023-08-05 12:11:56
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:
#include "boost/stl_interfaces/iterator_interface.hpp"
#include "boost/range/iterator_range.hpp"
struct basic_input_iter
     : boost::stl_interfaces::iterator_interface<
#if !BOOST_STL_INTERFACES_USE_DEDUCED_THIS
           basic_input_iter,
#endif
           std::input_iterator_tag, int>
{
     basic_input_iter() : it_(nullptr) {}
     basic_input_iter(int * it) : it_(it) {}
     int & operator*() const noexcept { return *it_; }
     basic_input_iter & operator++() noexcept
     {
         ++it_;
         return *this;
     }
     friend bool operator==(basic_input_iter lhs, basic_input_iter rhs) 
noexcept
     {
         return lhs.it_ == rhs.it_;
     }
     using base_type = boost::stl_interfaces::iterator_interface<
#if !BOOST_STL_INTERFACES_USE_DEDUCED_THIS
         basic_input_iter,
#endif
         std::input_iterator_tag, int>;
     using base_type::operator++;
private:
     int * it_;
};
auto make_range() {
   static int si;
   return boost::make_iterator_range(
       basic_input_iter(&si),
       basic_input_iter(&si + 1));
}
This fails to compile with the following errors:
 >g++ -Wall -Wstrict-aliasing=0 -Wno-unused-local-typedefs 
-Werror=return-type   -static-libgcc -static-libasan -static-libstdc++ 
-static-libubsan -std=gnu++20  -O3 -flto -pthread 
-Iintermediate/linux64/obj/linux64__test__iter_test 
-Iintermediate/linux64/libs/boost/install/include 
-DELDWOOD_EXTENSION_BOOST -c -o 
intermediate/linux64/obj/linux64__test__iter_test/eldwood/test/iter.cpp.o 
intermediate/linux64/obj/linux64__test__iter_test/eldwood/test/iter.cpp
In file included from 
intermediate/linux64/libs/boost/install/include/boost/iterator/iterator_facade.hpp:13,
                  from 
intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:27,
                  from 
intermediate/linux64/libs/boost/install/include/boost/range/iterator_range.hpp:13,
                  from 
intermediate/linux64/obj/linux64__test__iter_test/eldwood/test/iter.cpp:2:
intermediate/linux64/libs/boost/install/include/boost/iterator/iterator_categories.hpp: 
In instantiation of âstruct 
boost::iterators::iterator_traversal<basic_input_iter>â:
intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:158:5: 
   required from âstruct 
boost::iterator_range_detail::pure_iterator_traversal<basic_input_iter>â
intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:434:15: 
   required from âclass boost::iterator_range<basic_input_iter>â
intermediate/linux64/obj/linux64__test__iter_test/eldwood/test/iter.cpp:40:36: 
   required from here
intermediate/linux64/libs/boost/install/include/boost/iterator/iterator_categories.hpp:118:8: 
error: no type named âiterator_categoryâ in âstruct 
std::iterator_traits<basic_input_iter>â
   118 | struct iterator_traversal
       |        ^~~~~~~~~~~~~~~~~~
intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp: 
In instantiation of âstruct 
boost::iterator_range_detail::pure_iterator_traversal<basic_input_iter>â:
intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:434:15: 
   required from âclass boost::iterator_range<basic_input_iter>â
intermediate/linux64/obj/linux64__test__iter_test/eldwood/test/iter.cpp:40:36: 
   required from here
intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:158:5: 
error: no type named âtypeâ in âstruct 
boost::iterators::iterator_traversal<basic_input_iter>â
   158 |     traversal_t;
       |     ^~~~~~~~~~~
In file included from 
intermediate/linux64/libs/boost/install/include/boost/utility/enable_if.hpp:15,
                  from 
intermediate/linux64/libs/boost/install/include/boost/range/has_range_iterator.hpp:21,
                  from 
intermediate/linux64/libs/boost/install/include/boost/range/difference_type.hpp:21,
                  from 
intermediate/linux64/libs/boost/install/include/boost/range/size_type.hpp:19,
                  from 
intermediate/linux64/libs/boost/install/include/boost/range/size.hpp:21,
                  from 
intermediate/linux64/libs/boost/install/include/boost/range/functions.hpp:20,
                  from 
intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:38:
intermediate/linux64/libs/boost/install/include/boost/core/enable_if.hpp: 
In instantiation of âstruct 
boost::enable_if<boost::iterator_range<basic_input_iter>::is_compatible_range<const 
basic_input_iter>, void>â:
intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:489:13: 
   required by substitution of âtemplate<class SinglePassRange> 
boost::iterator_range<basic_input_iter>::iterator_range(const 
SinglePassRange&, typename boost::enable_if<is_compatible_range<const 
SinglePassRange>, void>::type*) [with SinglePassRange = basic_input_iter]â
intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:758:20: 
   required from âboost::iterator_range<IteratorT> 
boost::make_iterator_range(IteratorT, IteratorT) [with IteratorT = 
basic_input_iter]â
intermediate/linux64/obj/linux64__test__iter_test/eldwood/test/iter.cpp:40:36: 
   required from here
intermediate/linux64/libs/boost/install/include/boost/core/enable_if.hpp:41:10: 
error: âvalueâ is not a member of 
âboost::iterator_range<basic_input_iter>::is_compatible_range<const 
basic_input_iter>â
    41 |   struct enable_if : public enable_if_c<Cond::value, T> {};
       |          ^~~~~~~~~
intermediate/linux64/libs/boost/install/include/boost/core/enable_if.hpp: 
In instantiation of âstruct 
boost::enable_if<boost::iterator_range<basic_input_iter>::is_compatible_range<basic_input_iter>, 
void>â:
intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:500:13: 
   required by substitution of âtemplate<class SinglePassRange> 
boost::iterator_range<basic_input_iter>::iterator_range(SinglePassRange&, 
typename boost::enable_if<is_compatible_range<Source>, void>::type*) 
[with SinglePassRange = basic_input_iter]â
intermediate/linux64/libs/boost/install/include/boost/range/iterator_range_core.hpp:758:20: 
   required from âboost::iterator_range<IteratorT> 
boost::make_iterator_range(IteratorT, IteratorT) [with IteratorT = 
basic_input_iter]â
intermediate/linux64/obj/linux64__test__iter_test/eldwood/test/iter.cpp:40:36: 
   required from here
intermediate/linux64/libs/boost/install/include/boost/core/enable_if.hpp:41:10: 
error: âvalueâ is not a member of 
âboost::iterator_range<basic_input_iter>::is_compatible_range<basic_input_iter>â
Build failed.
-- Rainer Deyke (rainerd_at_[hidden])