Andrey Semashev
ef40faf620
Replaced leftover boost::true/false_type with std in counting_iterator.hpp.
...
Also made (unsigned) long long support mandatory.
2025-02-05 18:51:44 +03:00
Andrey Semashev
fc99b7a15d
Added missing includes for use_default.
2025-02-05 18:51:44 +03:00
Andrey Semashev
241c28018e
Converted leftover boost::true/false_type to std in iterator_facade.hpp.
2025-02-05 18:51:44 +03:00
Andrey Semashev
83905b219e
Reduced dependency on MPL in iterator_categories.hpp.
...
Also simplified implementation of type traits using Boost.MP11.
2025-02-05 18:51:44 +03:00
Andrey Semashev
6fab3bbfa4
Removed dependency on MPL from is_lvalue_iterator.hpp.
...
Also removed workarounds for older compilers and simplified implementation.
2025-02-05 18:51:44 +03:00
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
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
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
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
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.
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
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.
2022-11-18 00:46:21 +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
a3269e536f
Include remove_reference.hpp only when needed.
2022-07-01 00:23:19 +03:00
Andrey Semashev
1a80896934
Disabled assignment of output_proxy to output_proxy.
2022-07-01 00:13:32 +03:00
Andrey Semashev
ee2d3a6596
Made output_proxy private and made its internals private.
2022-06-30 23:35:58 +03:00
Andrey Semashev
cd24487161
Removed #include <utility>.
2022-06-30 23:26:52 +03:00
Andrey Semashev
dd37a27067
Marked output_proxy constructor explicit.
2022-06-30 23:25:33 +03:00
jakob lovhall
c924b42749
add forward reference assignment operator to function_output_iterator
2022-06-30 15:40:41 +02:00
Andrey Semashev
d175ba2450
Trim trailing spaces.
2022-01-13 17:32:11 +03:00
Andrey Semashev
75ba1a50c9
Switched enable_if from MPL to TypeTraits.
2022-01-13 17:28:53 +03:00
Andrey Semashev
e4ab917f79
Removed unneeded includes and added missing ones to transform_iterator.
2022-01-13 17:27:22 +03:00
Andrey Semashev
c901bd6d7a
Switched function_input_iterator to TypeTraits instead of MPL.
2022-01-13 17:08:55 +03:00
Andrey Semashev
eb0d01126a
Added support for int128 to counting_iterator.
2022-01-13 16:59:46 +03:00
Andrey Semashev
abe6fbfd4b
Converted counting_iterator to rely on TypeTraits instead of MPL.
2022-01-13 16:57:52 +03:00
Andrey Semashev
7a200905dd
Added an assignment operator to counting_iterator.
...
This should silence gcc warnings about deprecated implicit copy assignment
operator because of the explicitly defined copy constructor. Also, changed
constructor definitions to be defaulted when possible and added missing
includes.
Closes https://github.com/boostorg/iterator/pull/69 .
2022-01-13 16:34:47 +03:00
joaquintides
6dfb175cef
supressed spurious type-limits warning
...
See https://github.com/boostorg/iterator/pull/66 for details.
2021-08-31 19:19:57 +02:00
Andrey Semashev
9649d42392
Merge pull request #51 from Kojoley/add-deprecation-warning-for-boost-function_output_iterator
...
Add deprecation warning in `boost/function_output_iterator.hpp`
2020-05-02 02:01:07 +03:00
Edward Diener
dc7bf5cc05
Change __BORLANDC__ to BOOST_BORLANDC, which is defined in Boost config for the Embarcadero non-clang-based compilers.
2020-03-31 11:21:59 -04:00
Glen Fernandes
fdcd8439c0
BOOST_ prefix include guard macro
2019-12-18 08:40:35 -05:00
Nikita Kniazev
bfe2a004d2
Add deprecation warning in boost/function_output_iterator.hpp
2019-11-23 16:47:06 +03:00
Glen Fernandes
2af5a16539
Use use_default from Boost.Core
...
boost::use_default is now defined in Core for multiple Boost libraries.
2019-02-22 17:17:52 -05:00
Andrey Semashev
bb1efd3370
Updated addressof.hpp include path.
2018-11-14 12:42:24 +03:00
Andrey Semashev
6ab148be01
Revert "Revert "Replace using-declarations with using-directives to avoid ADL issues.""
...
This reverts commit 06875a754d .
The suggested fix for build failures need to be applied to Boost.Range:
https://github.com/boostorg/range/pull/75
2018-09-23 12:28:03 +03:00
Andrey Semashev
06875a754d
Revert "Replace using-declarations with using-directives to avoid ADL issues."
...
This reverts commit 44cee00831 .
The commit reportedly broke building Boost and quickbook.
b844c8df53 (commitcomment-30603668)
2018-09-22 18:46:36 +03:00
morinmorin
194087e8ca
Merge branch 'develop' into fix/unwanted_adl
2018-09-22 20:47:10 +09:00
morinmorin
44cee00831
Replace using-declarations with using-directives to avoid ADL issues.
2018-09-22 20:20:59 +09:00
Daniela Engert
e16f2de233
Inheriting std::iterator is deprecated in c++17.
...
Boost's iterator.hpp is deprecated, too. Therefore get rid of all of that and replace inheritance by lifting std::iterator's members into the derived class.
Signed-off-by: Daniela Engert <dani@ngrt.de >
2017-12-27 09:32:51 +01:00