1059 Commits

Author SHA1 Message Date
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
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
Andrey Semashev
7b6edb6a7d Merge pull request #73 from Hailios/rvalue_ref_func_iterator
add forward reference assignment operator to function_output_iterator
2022-06-30 23:24:11 +03:00
jakob lovhall
c924b42749 add forward reference assignment operator to function_output_iterator 2022-06-30 15:40:41 +02:00
Andrey Semashev
85d935bf68 Added VS2022 job and C++20 and C++latest jobs to AppVeyor CI. 2022-06-06 02:57:44 +03:00
Andrey Semashev
d175ba2450 Trim trailing spaces. boost-1.79.0.beta1 boost-1.79.0 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
Andrey Semashev
acf35d2a87 Fixed a link to library docs and silenced b2 warning about unescaped character. boost-1.78.0 2021-11-19 18:32:24 +03:00
Andrey Semashev
5ebbe941be Updated check for apt-add-repository capabilities.
In Ubuntu 20.04 there appeared an updated version of the
software-properties-common package in focal-updates, which ships a newer
apt-add-repository version that doesn't support -P/-S/-U command line arguments.

Since we cannot rely on package version checks to determine apt-add-repository
capabilities, we have to parse its --help output instead.

Also, made source list processing more protected against spaces.
2021-11-16 00:48:57 +03:00
Andrey Semashev
72308ef787 Fixed git version check on Mac OS. boost-1.78.0.beta1 2021-09-26 20:40:21 +03:00
Andrey Semashev
9124869bcc Updated link to AppVeyor badge. 2021-09-15 22:15:48 +03:00
Andrey Semashev
216b442d23 Added GHA CI timeout. 2021-09-15 21:32:19 +03:00
Andrey Semashev
c858138495 Explicitly specify address-model for MSVC.
This works around Boost.Build bug:

https://github.com/boostorg/build/issues/659
2021-09-13 10:02:47 +03:00
Andrey Semashev
1c6f85d4f9 Fixed a preprocessor condition. 2021-09-12 23:36:59 +03:00
Andrey Semashev
0a59f555ca Added libc++ 12 to the list of standard libs implementing C++20 std::ostream_iterator. 2021-09-12 22:52:55 +03:00
Andrey Semashev
18337e990b Disable zip_iterator test with std::tuple on gcc 4.4.
libstdc++ from gcc 4.4 has a broken std::tuple that fails to compile
a constructor from a compatible tuple:

/usr/include/c++/4.4/tuple: In constructor 'std::_Head_base<_Idx, _Head, false>::_Head_base(_UHead&&) [with _UHead = std::_Head_base<0ul, const int&, false>, long unsigned int _Idx = 0ul, _Head = int]':
/usr/include/c++/4.4/tuple:179:   instantiated from 'std::_Tuple_impl<_Idx, _Head, _Tail ...>::_Tuple_impl(std::_Tuple_impl<_Idx, _UElements ...>&&) [with _UElements = const int&, double&, long unsigned int _Idx = 0ul, _Head = int, _Tail = double]'
/usr/include/c++/4.4/tuple:338:   instantiated from 'std::tuple<_T1, _T2>::tuple(std::tuple<_U1, _U2>&&) [with _U1 = const int&, _U2 = double&, _T1 = int, _T2 = double]'
libs/iterator/test/detail/zip_iterator_test_original.ipp:137:   instantiated from here
/usr/include/c++/4.4/tuple:94: error: cannot convert 'std::_Head_base<0ul, const int&, false>' to 'int' in initialization
2021-09-12 22:40:19 +03:00
Andrey Semashev
1447c566d1 Removed CMake tests from GHA config. 2021-09-12 20:35:29 +03:00
Andrey Semashev
fc281fa58a Added a README.md file. 2021-09-12 20:10:07 +03:00
Andrey Semashev
b76c273946 Added GitHub Actions config. 2021-09-12 20:01:33 +03:00
Andrey Semashev
f396a8fef0 Removed Travis CI config.
Since Travis CI no longer runs free jobs for open source projects,
we are switching to GitHub Actions instead.
2021-09-12 19:59:52 +03:00
Andrey Semashev
5a6013e21f Merge pull request #67 from joaquintides/patch-2
supressed spurious type-limits warning
2021-08-31 20:36:32 +03:00