Commit Graph

260 Commits

Author SHA1 Message Date
Zach Laine
df9e186bd6 Add a new v3 namespace, containing a new iterator_interface based on deducing
this instead of CRTP.
boost-1.83.0 boost-1.84.0.beta1 boost-1.84.0 boost-1.83.0.beta1
2023-06-05 00:12:54 -05:00
Zach Laine
6ee9557df9 Fix errors on MSVC. 2023-06-04 19:05:28 -05:00
Zach Laine
85e07407ab Update the OSX test runner image and XCode version. 2023-05-29 22:52:00 -05:00
Zach Laine
d61867d8be GCC 13 reports as ill-formed code that evaluates a concept C more than once
with the same template parameters, when the value of C changes between the
evaluations.  This is correct, but no other implementation checks this.  Move
all the hidden friends out of the v2::iterator_interface to fix these kinds of
errors.
2023-05-29 15:21:37 -05:00
Zach Laine
cb96522275 detail::sub -> detail::iter_sub; make iter_sub a bit more robust. 2023-05-03 20:06:56 -05:00
Zach Laine
46c82966a6 Fix sign confusion in iterator_interface::op<=>. 2023-05-03 20:06:17 -05:00
Zach Laine
c022029c27 In C++20 and later, return void from operator++(int), for input_iterators.
This matches the requirements of the std::input_iterator concept.  This is not
done in earlier C++ versions, because it completely breaks use of input
iterators with the standard algorithms.
2023-05-02 20:31:02 -05:00
Zach Laine
21e03e7013 Use the given iterator_concept, but only define iterator_category when
appropriate to do so.  Appropriateness follows the algorithm for zip_view's
iterator.  See https://eel.is/c++draft/range.zip.transform.iterator#1.

Requested by LEWG reviewers of iterator_interface.
2023-05-02 20:31:02 -05:00
Zach Laine
86aeeb1bb5 Add support for operator<=> comparisons of iterator_interfaces. 2023-03-29 18:55:25 -05:00
Zach Laine
965b1119cb Disable iterator_interface::operator-> when pointer is void or reference is
not a language reference.
2023-03-26 14:14:11 -05:00
Zach Laine
51c212234e Use iterator_category_base with the C++20 version of iterator_interface. 2023-03-25 21:33:34 -05:00
Zach Laine
558548fa8a Add detail::iterator_category_base. 2023-03-25 18:01:42 -05:00
Zach Laine
a823593710 Add simple check of nested typedefs in iterators deriving from a
dependently-typed iterator_interface.
2023-01-31 21:50:37 -06:00
Zach Laine
8390819a70 Print message when cloning Boost. 2022-12-06 05:29:01 -06:00
Zach Laine
8c8f7905a1 Set the CXX_STANDARD CMake property on the compile tests. 2022-12-05 21:09:36 -06:00
Zach Laine
158fca0b6b Make the compile_sfinae_path_mutable_iterator compile-test 14-friendly. 2022-12-05 20:29:46 -06:00
Zach Laine
c157b1637a Add a test to cover #59 so that it does not pop up again.
Fixes #60.
2022-12-05 20:11:03 -06:00
Zach Laine
7dd2b97589 Cruft removal. 2022-11-19 22:26:03 -06:00
Zach Laine
1dc2923434 Add non-const overloads of op* and op-> to v1 iterator_interface. This
matches more closely what v2 does.

Fixes #59.
boost-1.82.0.beta1 boost-1.82.0 boost-1.81.0
2022-11-18 19:54:40 -06:00
Zach Laine
24f9450297 Doc copy editing. boost-1.80.0 boost-1.81.0.beta1 boost-1.80.0.beta1 2022-06-04 20:06:33 -05:00
Zach Laine
bd21cd308e Add some user/std mixed cases to view_adaptor.cpp. 2022-06-04 19:52:51 -05:00
Zach Laine
544c7448b4 Add a discussion of why it is sometimes necessary to use bind_back() directly. 2022-06-04 17:17:41 -05:00
Zach Laine
303a9da254 Create tutorial for the new range adaptor helpers. 2022-06-04 17:17:41 -05:00
Zach Laine
c6d7fa15fa Break take_view out into its own header, in example/. 2022-06-04 16:10:02 -05:00
Zach Laine
808cbfac15 Break reverse_view out into its own header, in example/. 2022-06-04 16:10:02 -05:00
Zach Laine
19a2729a15 Break all_view out into its own header, in example/. 2022-06-04 16:10:02 -05:00
Zach Laine
6a64d48840 Require an actual std::ranges::view for take_view and reverse_view; take_view
template parameter R -> View.
2022-06-04 16:10:02 -05:00
Zach Laine
6fa878de2f Update crufty bits of README, and remove Travis and Appveyor config files. 2022-06-04 16:10:02 -05:00
Zach Laine
437c188167 Consistently use BOOST_STL_INTERFACES_USE_CONCEPTS as the preprocessor
predicate to guard test code, instead of the hodgepodge that was used
previously.
2022-06-04 16:10:02 -05:00
Zach Laine
14c3741aaf Expand the view_adaptor test; fix errors. 2022-06-03 23:00:19 -05:00
Zach Laine
6a080f84cb Add very simple initial test of view_adaptor; fix errors. 2022-06-03 21:27:20 -05:00
Zach Laine
410e865acd Add view_adaptor.hpp and its associated detail/ headers. 2022-06-03 17:47:19 -05:00
Zach Laine
f84cb723e1 Cruft removal. 2022-05-18 03:51:36 -05:00
Zach Laine
f108c2dd4e Require __cpp_lib_concepts and __cpp_lib_ranges in order to enable
BOOST_STL_INTERFACES_USE_CONCEPTS.
2022-05-17 22:33:46 -05:00
Zach Laine
537f62e9b2 Don't use derived() in concept constraints. This fixes VS2022 in
C++20 mode.
2022-05-17 18:09:59 -05:00
Zach Laine
6514451f06 Fix doc typo. 2022-05-08 12:10:28 -05:00
sdarwin
37e420670b Update GitHub Actions CI file 2021-12-08 20:18:13 -06:00
Zach Laine
80ae39ed94 Re-enable testing of contiguos iterator .data() member in random_access.cpp
when __cpp_lib_concepts is defined, for the GCC versions that support this.
2021-12-08 19:33:42 -06:00
Zach Laine
ea719c8bf8 Add missing typename.
Fixes #53.
2021-12-08 19:13:58 -06:00
Jan Bouwer
ccecfa5652 Return derived() from operator--() in iterator_interface.
Previously, this returned the underlying adapted iterator.
Fixes #50.
2021-12-08 19:03:30 -06:00
sdarwin
fbde58f203 Update metadata 2021-12-08 18:49:37 -06:00
sdarwin
920a64cea3 Add GitHub Actions config [ci skip] 2021-06-07 21:00:34 -05:00
sdarwin
caa69728b7 add drone config [ci skip] 2021-06-07 21:00:26 -05:00
Zach Laine
89840c0531 Revert "Add GCC 10 to Travis build."
This reverts commit 8e7e0390de.
boost-1.78.0.beta1 boost-1.79.0.beta1 boost-1.79.0 boost-1.78.0 boost-1.77.0.beta1 boost-1.77.0
2021-06-06 17:38:06 -05:00
Zach Laine
8e7e0390de Add GCC 10 to Travis build. 2021-06-06 14:45:10 -05:00
Zach Laine
cd1fd465f3 Don't use a member function on the trailing return type of operator+=() and
operator++() in iterator_interface; use the equivalent hand-written code
instead.  Addresses #50 on older Clang.
2021-06-06 13:43:08 -05:00
Zach Laine
7c1f2c02bd Return derived() from operator+=() and operator++() in iterator_interface.
Previously, those each returned the underlying adapted iterator.

Fixes #50.
2021-06-05 18:37:59 -05:00
Zach Laine
907759ada3 Fix broken BOOST_STL_INTERFACES_STATIC_ASSERT_CONCEPT macro; it now properly
static_asserts in C++20 builds.
2021-06-05 17:52:50 -05:00
Zach Laine
e98536344d Pass an rvalue to emplace_back() in unevaluated contexts that are testing its
existence.  This is important for containers derived from sequence_container
that constrain emplace_back() itself, and have a move-only value_type.

Fixes #48.
2021-06-05 17:34:56 -05:00
Peter Dimov
29b990ba00 Add a Boost-friendly subproject case to CMakeLists 2021-06-05 16:58:24 -05:00