Commit Graph

1087 Commits

Author SHA1 Message Date
Andrey Semashev
dec7d0f24c Extracted min_category as a variadic metafunction.
The new min_category is similar to minimum_category but accepts variable
number of iterator categories on input instead of just two, and also does
not depend on Boost.MPL for lambda placeholders. The existing minimum_category
trait has been reimplemented in terms of min_category and deprecated.

We don't yet emit deprecation warnings as there is still code that uses
the old trait which we first need to update. Eventually, minimum_category
will emit warnings and will be removed.
2025-02-05 18:51:37 +03:00
Andrey Semashev
b30cbf634c Reduced dependency on MPL in minimum_category.hpp. 2025-01-26 20:00:53 +03:00
Andrey Semashev
7ddbf15868 Removed MPL usage from iterator_archetypes.hpp. 2025-01-26 19:08:40 +03:00
Andrey Semashev
4fc0165034 Removed support for ancient complilers for MPL lambdas in is_readable_iterator. 2025-01-26 17:58:48 +03:00
Andrey Semashev
bcf94f9e5d Removed MPL usage from pointee and indirect_reference. 2025-01-26 17:57:47 +03:00
Andrey Semashev
d6297a553b Removed the BOOST_ITERATOR_CONVERTIBLE helper macro. 2025-01-26 15:55:52 +03:00
Andrey Semashev
32d19a72e1 Trim trailing spaces. 2025-01-26 15:45:03 +03:00
Andrey Semashev
cf43da4286 Removed useless #if 1. 2025-01-26 15:42:30 +03:00
Andrey Semashev
10e89b3e4c Restored brace formatting in new_iterator_tests.hpp. 2025-01-26 15:25:28 +03:00
Andrey Semashev
5ed3144969 Restored the original static assert check. 2025-01-26 15:22:53 +03:00
Georgy Guminov
f9effffb6d Mostly remove pre-CXX11 workarounds.
С++03 support was deprecated in 1.85 and now can be removed. This PR clears
many of workarounds, which are no longer needed now.

* Remove unused workaround macros (many of).
* Remove BOOST_STATIC_ASSERT usages.
* Minimize Boost::type_traits dependency (in favour of STL's type_traits).

Closes https://github.com/boostorg/iterator/pull/82.

Squashed commit of the following:

commit 741a627b73
Author: Georgy Guminov <gogagum@gmail.com>
Date:   Sat Jan 25 12:13:05 2025 +0300

    Replace testers with standard metafunctions.

commit bf4cce6114
Author: Georgy Guminov <gogagum@gmail.com>
Date:   Sat Jan 25 11:51:32 2025 +0300

    Refactor is_lvalue_iterator.hpp.

commit 8d080c6c58
Author: Georgy Guminov <gogagum@gmail.com>
Date:   Sat Jan 25 10:27:32 2025 +0300

    Remove more workarounds.

commit 5a4ba24d36
Author: Georgy Guminov <gogagum@gmail.com>
Date:   Sun Jan 19 16:38:30 2025 +0300

    Fixes.

commit fdfafce2b9
Author: Georgy Guminov <gogagum@gmail.com>
Date:   Sat Oct 26 15:06:43 2024 +0300

    Remove BOOST_NO_STRICT_ITERATOR_INTEROPERABILITY
    Correct static_assert messages.
    Fix messages & replace is_standard_layout with is_copy_constructible.

commit c69ac1408a
Author: Georgy Guminov <gogagum@gmail.com>
Date:   Sat Oct 26 14:48:51 2024 +0300

    Correct static_assert messages.

commit b5df827151
Author: Georqy Guminov <gogagum@gmail.com>
Date:   Sun Jun 23 16:12:29 2024 +0300

    Fixes. Remove some Boost.MPL usages. Remove unused includes.

commit 01fd35e9f8
Author: Georgiy Guminov <gogagum@gmail.com>
Date:   Wed Jun 12 17:14:21 2024 +0300

    abstract conjunction.

commit c02def8acf
Author: Georgiy Guminov <gogagum@gmail.com>
Date:   Wed Jun 12 16:35:43 2024 +0300

    return addressof & conjunction.

commit 3b3d162575
Author: Georgiy Guminov <gogagum@gmail.com>
Date:   Wed Jun 12 16:30:44 2024 +0300

    Make macro more readable.

commit 4ab19e045f
Author: Georgiy Guminov <gogagum@gmail.com>
Date:   Wed Jun 12 15:56:49 2024 +0300

    Add static_assert messages.

commit 82b5c44cd3
Author: Georgiy Guminov <gogagum@gmail.com>
Date:   Wed Jun 12 14:12:10 2024 +0300

    Return is iterator CXX17 test.

commit 2d58d65462
Author: Georgiy Guminov <gogagum@gmail.com>
Date:   Tue Jun 11 14:04:17 2024 +0300

    Omitted.

commit a0d04d9491
Author: Georgiy Guminov <gogagum@gmail.com>
Date:   Tue Jun 11 14:00:35 2024 +0300

    Replace move with static_cast

commit 4a49b8a1a2
Author: Georgiy Guminov <gogagum@gmail.com>
Date:   Mon Jun 10 21:38:53 2024 +0300

    Return BOOST_NOEXCEPT

commit 054c013bba
Author: Georgiy Guminov <gogagum@gmail.com>
Date:   Sun Jun 9 15:20:41 2024 +0300

    CXX11
2025-01-26 15:21:16 +03:00
Andrey Semashev
53101ffab9 GitHub Actions CI update.
Removed MacOS 12 and added MacOS 15 job as the former image is removed
from GHA.

Added newer gcc and clang jobs on Linux. Updated Linux images to reduce
reliance on external package repositories.
2025-01-26 15:05:14 +03:00
Andrey Semashev
4b40364d6d Work around compilation errors on clang-10 through 12. boost-1.87.0.beta1 boost-1.87.0 2024-10-11 01:04:21 +03:00
Andrey Semashev
7c55a6cef8 Marked output_proxy assignment as const.
This is also required for compliance with std::output_iterator concept.
2024-10-11 00:34:28 +03:00
Georgiy Guminov
1ea8087623 Check for compliance with output_iterator in function_output_iterator_test. 2024-10-11 00:29:20 +03:00
Andrey Semashev
e4eaeeac44 Make function_output_iterator compliant with std::output_iterator concept.
Fixes https://github.com/boostorg/iterator/issues/85.
Closes https://github.com/boostorg/iterator/pull/87.
2024-10-11 00:26:30 +03:00
Andrey Semashev
46ffe06b3d Removed MSVC-12 job from AppVeyor CI.
This compiler is no longer supported by Boost.SmartPtr that is
used in tests.
2024-10-11 00:21:46 +03:00
Andrey Semashev
8b83324682 Removed gcc 4.6 and 4.7 from GitHub Actions CI.
These compilers are not supported by Boost.SmartPtr and Boost.Optional,
which are used in tests.
2024-10-11 00:13:00 +03:00
René Ferdinand Rivera Morell
ce030ab2c3 Add support for modular build structure. (#84)
* Make the library modular usable.

* Switch to library requirements instead of source. As source puts extra source in install targets.

* Remove not-needed reference to Conversion dependency.

* Add missing b2 testing module import.

* Add requires-b2 check to top-level build file.

* Bump B2 require to 5.2

* Change all <source> references to <library>.

* Update copyright dates.

* Move inter-lib dependencies to a project variable and into the build targets.

* Update build deps.
2024-08-19 01:22:08 +03:00
Andrey Semashev
4914e1f40a Updated deprecated include in docs.
Closes https://github.com/boostorg/iterator/pull/83.
boost-1.86.0.beta1 boost-1.86.0
2024-07-03 15:12:28 +03:00
Andrey Semashev
0abef890ee Replaced macos-11 GHA image with 12, 13 and 14 since 11 is being removed. 2024-05-21 01:17:20 +03:00
Andrey Semashev
4f7219965a Added gcc-13 CI job. boost-1.85.0.beta1 boost-1.85.0 2024-02-06 00:35:15 +03:00
Andrey Semashev
988594fb9d Added clang-17 CI jobs. 2024-02-06 00:26:38 +03:00
Andrey Semashev
3fa2242082 Added Windows jobs to GHA CI. 2024-02-06 00:24:05 +03:00
Andrey Semashev
43dde9b9c3 Reduced CI job timeouts. 2024-02-06 00:22:10 +03:00
Andrey Semashev
7968dd3ea8 Replaced actions/checkout usage with manual download commands.
This fixes the deprecation warnings for actions/checkout@v3. actions/checkout@v4
is not functional because of the upstream bug:

https://github.com/actions/checkout/issues/1590
2024-02-06 00:17:16 +03:00
Andrey Semashev
dfe11e7144 Removed one more $ tag. 2024-01-03 01:43:52 +03:00
Andrey Semashev
9cc1a4fdd1 Removed $Date$ tags from docs.
The tags were not being updated for a long time now and were
visible in the final docs.

Reported in https://github.com/boostorg/website/issues/762.
2024-01-03 01:31:05 +03:00
Andrey Semashev
ae5d7d8c0c Added a CMake test. boost-1.84.0 2023-11-17 17:47:20 +03:00
Andrey Semashev
d72d57fa39 Removed dependency on Boost.Conversion in CMakeLists.txt.
Fixes https://github.com/boostorg/iterator/issues/81.
2023-11-17 17:24:02 +03:00
Andrey Semashev
c98f965388 Use gcc-11 libstdc++ for clang-12 through 15. 2023-11-17 11:06:21 +03:00
Andrey Semashev
d09f78ae9b Removed C++03 CI jobs. 2023-11-17 04:46:21 +03:00
Andrey Semashev
a9dabd3c65 Removed dependency on Boost.Conversion in tests.
This reduces the minimum supported compilers versions.
2023-11-17 04:25:29 +03:00
Andrey Semashev
80bb1ac9e4 Avoid including <utility>, added a missing include. boost-1.83.0 boost-1.84.0.beta1 boost-1.83.0.beta1 2023-06-22 21:14:03 +03:00
Brian Weed
d11499c08c Performance improvement: (#79)
Performance improvement: Add move semantics to by-value parameters (iterator and predicate), to eliminate the cost of copy-construction. Both the Predicate (Normally a std::function, or lambda), and custom iterators can have state, which can be expensive to copy. Profiler identified this as a bottleneck while using boost::adaptors::filtered.
2023-06-22 21:06:19 +03:00
Andrey Semashev
6d02c36718 Add clang-16 CI jobs, switch to clang-15 from stock Ubuntu repos. 2023-06-05 03:17:56 +03:00
Andrey Semashev
85b542e1b6 Extracted is_iterator trait to a separate header.
Also, reworked is_iterator to be more robust against various corner cases
and added dedicated tests for the type trait.
2023-05-21 15:18:54 +03:00
Alexander Grund
e8fbd92a61 Use BOOST_STATIC_ASSERT instead of BOOST_MPL_ASSERT (#78)
The MPL version is slower to compile and `BOOST_STATIC_ASSERT` is
already used in some places. So unify that.

This also fixes `Wzero-as-null-pointer-constant` warnings, see https://github.com/boostorg/mpl/pull/75
2023-05-07 15:23:16 +03:00
Andrey Semashev
7c9b4296a1 Fixed accessing members of the dereferenced value after iterator post-increment.
The recent commit 5777e9944b broke code such as
(*it++).foo(), where the result of dereferencing would be convertible to
the value type but did not provide the members of the value type. To mitigate
this, return a reference to the value instead of a proxy object. This will only
work for non-writable iterators (and it didn't work for writable iterators
before either) because in that case a proxy is needed to be able to intercept
operator=.

Also fix a similar issue with (it++)->foo() by adding operator-> overloads
to the post-increment result proxies.

Added tests for the fixes.
boost-1.82.0 boost-1.82.0.beta1 boost-1.81.0
2022-11-18 00:46:21 +03:00
Andrey Semashev
0a95636faf Added test for converting func_input_iter increment results to the iterator type. boost-1.81.0.beta1 2022-11-09 21:19:00 +03:00
Andrey Semashev
5777e9944b Added conversion from postfix increment proxy to iterator type.
This allows expressions such as `Iterator it2(it1++)` to compile.

Additionally separated operations that are allowed on the result of
dereferencing the proxy to a separate set of proxies to make the allowed
set of expressions more strict and unambiguous. In particular, it means
`it++` cannot be converted to value type and `*it++` cannot be converted
to the iterator type anymore. Also, make sure `*it1++ = *it2++` works
as expexted by explicitly converting the proxy to the value type on
assignment.

Fixes https://github.com/boostorg/iterator/issues/75.
2022-11-09 21:16:20 +03:00
Andrey Semashev
853ba3d3c7 Use the proper derived type of the function_input_iterator in iterator_facade.
This fixes incorrect final iterator type being used in iterator_facade, which
results in an internal base class being returned from various facade methods.

Reported in https://github.com/boostorg/iterator/issues/75.
2022-11-09 21:15:44 +03:00
Andrey Semashev
f82627f2cc Updated to GHA checkout@v3 to avoid deprecation warnings. 2022-10-18 17:57:57 +03:00
Andrey Semashev
ed1d96f251 GitHub Actions config update.
- Added gcc-12 and clang-13 through 15 jobs.
- Added C++23 testing for gcc and clang on Linux.
- Updated clang version for UBSAN job.
- Updated Ubuntu version for clang jobs to avoid having to use external APT
  repository.
- Updated python package installation for compatibility with Ubuntu 22.04.
2022-09-10 01:29:45 +03:00
Andrey Semashev
ce52aee3ce Switched gcc-9 to ubuntu-20.04 GHA CI image. 2022-08-14 17:53:43 +03:00
Andrey Semashev
17355c5ad0 Updated copyright years. 2022-08-14 14:01:45 +03:00
Andrey Semashev
9504b3bced Replaced ubuntu-18.04 GHA CI images with containers.
Also use ubuntu-latest image for jobs that are running in a container.
2022-08-14 14:00:17 +03:00
Andrey Semashev
2cc45f1694 Switch to macos-11 GHA image as macos-10.15 is deprecated. 2022-08-12 15:59:54 +03:00
Andrey Semashev
a3269e536f Include remove_reference.hpp only when needed. boost-1.80.0.beta1 boost-1.80.0 2022-07-01 00:23:19 +03:00
Andrey Semashev
129245a985 Added tests for function_output_iterator. 2022-07-01 00:14:14 +03:00