577203bee8
Merge branch 'develop'
2017-08-26 17:25:35 +03:00
5f6ac9c020
Added next/prior documentation.
2017-08-26 16:27:55 +03:00
a48de6a8b8
Added tests for next/prior to the Jamfile. Ported tests to lightweight_test.hpp.
2017-08-26 15:31:38 +03:00
5f6fd2dec6
Use std::iterator_traits to detect iterators, when possible.
...
This allows next/prior to detect user's iterators that do not
define iterator_category nested type but specialize
std::iterator_traits instead.
2017-08-26 15:23:36 +03:00
e3577e7687
Use Boost.Iterator to advance iterators.
...
By using Boost.Iterator we rely on the separate traversal category instead of
the standard iterator category to advance iterators efficiently. For instance,
this allows to advance transform iterators over a random access sequence
in constant time, despite that they are formally input iterators.
Also, std::reverse_iterator formally requires at least bidirectional iterator
as the underlying iterator type. Transform iterators from the example above
don't qualify, so potentially std::reverse_iterator could fail to compile.
2017-08-26 15:23:36 +03:00
5ba36b063e
Changed iterator_category nested type detection to work with MSVC and different versions of gcc.
2017-08-26 15:23:36 +03:00
bab02bb82e
Add test cases for std::reverse_iterator
2017-08-26 15:23:36 +03:00
d251a6f515
Reworked iterator handling in next/prior helpers.
...
The new implementation tries to detect if the incremented/decremented type
is an iterator first and if not falls back to operator probing. This way
iterators that are not SFINAE-friendly (i.e. unconditionally define
arithmetic operators regardless of the iterator category) are still treated
as iterators through std::advance and do not fail the compilation.
The iterator detection is based on probing for the nested iterator_category
type that is expected to be present in class-type iterators. This heuristic
is not flawless since iterators are not required to defined this type.
User-defined iterators may not have it and instead specialize
std::iterator_traits. This use case is not covered by the current implementation
and will likely fail to compile. With C++17 SFINAE-friendly std::iterator_traits
this can be fixed, but currently Boost.Config lacks the macro to detect
availability of this feature. Support for it can be added by a later commit.
Also simplified boost::prior for iterators, removing the possibility of
integer overflow caused by negation of the distance value.
2017-08-26 15:23:36 +03:00
9d054b25ce
Reworked next() and prior() taking the distance arguments.
...
The new version should provide the expected behavior in the case (prior(v.end(), v.size()) == v.begin()). It should also work with integers now, as was originally intended by David Abrahams. Added tests to verify these new use cases.
2017-08-26 15:23:36 +03:00
d1b22ac8e8
Remove executable bit from the file.
2017-08-26 15:23:36 +03:00
abe77db3e0
Added Daryle Walker's copyrights as requested.
...
[SVN r24481]
2017-08-26 15:23:36 +03:00
398819237e
Removed Boost.org copyrights and replaced with originating authors copyright instead.
...
[SVN r24372]
2017-08-26 15:23:36 +03:00
a4bacb5077
Extended next/prior using patch from Daniel Walker (Daniel.Walker-at-bowneglobal.com)
...
[SVN r21382]
2017-08-26 15:23:36 +03:00
5ba5f2c2d4
split utility.hpp header
...
[SVN r17472]
2017-08-26 15:23:36 +03:00
6c1b356be1
Merge pull request #29 from morinmorin/add_doc_for_advance_and_distance
...
Add doc for advance and distance
2017-07-23 12:38:00 -04:00
bfcf52ace6
Add links to advance and distance
2017-07-23 23:49:30 +09:00
e2c927628c
Add documentation for advance and distance
2017-07-23 23:46:26 +09:00
ed027c2cce
Merge branch 'develop'
...
# Conflicts:
# include/boost/iterator/reverse_iterator.hpp
boost-1.65.0
boost-1.65.1
2017-07-17 12:03:38 -04:00
4791425000
Merge pull request #27 from Lastique/advance_generic_distance
...
Use a separate template parameter for distance in advance().
2017-07-12 12:20:34 -04:00
b7e7e83a11
Merge pull request #28 from Lastique/patch-2
...
Avoid integer overflow on negating distance in reverse_iterator
2017-07-12 12:17:22 -04:00
c148962bd9
Avoid integer overflow on negating distance
2017-07-10 14:57:40 +03:00
5bfbfb7716
Use a separate template parameter for distance in advance().
...
This follows std::advance interface and also allows to use distance types
other than iterator's difference_type (if the iterator supports that).
2017-07-10 14:51:07 +03:00
af5f6e49e0
Merge pull request #26 from Lastique/patch-2
...
Remove dependency on boost::prior.
2017-07-09 11:59:18 -04:00
26ee5ba754
Remove dependency on boost::prior.
2017-07-09 18:31:06 +03:00
67a2336cf4
Merge pull request #25 from morinmorin/add_readable_iterator_tests
...
Add more ReabableIterator tests for advance/distance
2017-07-09 11:14:04 -04:00
029277f3ed
Add more tests for ReabableIterator
2017-07-08 13:30:28 +09:00
847b2a1be3
Added Travis testing
2017-06-30 20:29:49 -04:00
18268069d9
Merge pull request #24 from morinmorin/add_advance_and_distance
...
Add boost::advance and boost::distance
2017-06-29 15:02:38 -04:00
bb54ee7900
Update Jamfile.v2 for new tests
2017-06-29 22:49:05 +09:00
d5b67c7fab
Add tests for boost::advance/distance
2017-06-29 22:09:26 +09:00
663a30f659
Implement BoostIteratorTraversalConcepts-aware boost::advance/distance
2017-06-29 22:06:12 +09:00
177f719d15
Merge branch 'develop'
2017-04-24 12:24:21 -04:00
cccbd8c6aa
Test needs both std::typle support and variadic template support.
2017-04-08 16:53:02 -04:00
d6cfed4b20
Merge pull request #23 from morinmorin/testcase_for_trac_12895
...
Testcase for PR #22 (trac ticket 12895)
2017-03-15 12:19:13 -04:00
514ac53326
Merge pull request #22 from Dani-Hub/develop
...
Bug fix for ticket #12895 : Apply remove_reference before remove_cv
2017-03-15 12:12:12 -04:00
ca3b7505ce
Add a testcase for trac ticket 12895
2017-03-15 20:41:24 +09:00
d7c8cccd64
Bug fix for ticket #12895 : Apply remove_reference before remove_cv
2017-03-14 20:45:48 +01:00
7b627fa679
Merge branch 'develop'
boost-1.64.0-beta1
boost-1.64.0-beta2
boost-1.64.0
2017-01-04 10:58:14 -05:00
760da84f9c
Merge branch 'develop' of https://github.com/eldiener/iterator into nekko1119-support-lambda-expression
2016-12-17 19:34:48 -05:00
89d3ec7662
Add inclusion of config.hpp
2016-12-17 19:32:52 -05:00
c86db2ec8a
Merge branch 'support-lambda-expression' of https://github.com/nekko1119/iterator into nekko1119-support-lambda-expression
2016-12-16 04:22:44 -05:00
0a18cfb255
Merge pull request #21 from Wilson-N/feature-bug-fix-8010
...
Remove incorrect documentation stating iterator_facade and iterator_a…
2016-12-01 08:53:05 -05:00
11e3715f37
Updated to use unique_ptr instead of auto_ptr when appropriate. Removed unnecessary structs.
2016-11-07 14:01:19 -05:00
f2d07f76b5
Add, and update, documentation build targets.
boost-1.63.0
2016-10-10 11:39:50 -05:00
53e8ac401f
Add, and update, documentation build targets.
2016-10-07 23:07:34 -05:00
434818cce7
Remove incorrect documentation stating iterator_facade and iterator_adapter had
...
been accepted into the TR1.
Fixes #8010
2016-01-27 22:22:55 -06:00
c09c8ca2b2
Support lambda expressions in function_input_iterator
2015-12-28 02:45:49 +09:00
22dd100dfd
Revert "Remove unused deprecated includes"
...
This reverts commit b2b9ab1568
.
boost-1.62.0
boost-1.61.0
boost-1.60.0
2015-10-15 23:55:35 -04:00
2f72016049
Revert "Fix test compilation"
...
This reverts commit 443dfb9901
.
2015-10-15 23:53:37 -04:00
5b26a8b3fc
Merge branch 'develop'
2015-10-14 23:59:55 -04:00