Andrey Semashev
577203bee8
Merge branch 'develop'
2017-08-26 17:25:35 +03:00
Andrey Semashev
5f6ac9c020
Added next/prior documentation.
2017-08-26 16:27:55 +03:00
Andrey Semashev
a48de6a8b8
Added tests for next/prior to the Jamfile. Ported tests to lightweight_test.hpp.
2017-08-26 15:31:38 +03:00
Andrey Semashev
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
Andrey Semashev
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
Andrey Semashev
5ba36b063e
Changed iterator_category nested type detection to work with MSVC and different versions of gcc.
2017-08-26 15:23:36 +03:00
Brian Minard
bab02bb82e
Add test cases for std::reverse_iterator
2017-08-26 15:23:36 +03:00
Andrey Semashev
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
Andrey Semashev
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
Andrey Semashev
d1b22ac8e8
Remove executable bit from the file.
2017-08-26 15:23:36 +03:00
John Maddock
abe77db3e0
Added Daryle Walker's copyrights as requested.
...
[SVN r24481]
2017-08-26 15:23:36 +03:00
John Maddock
398819237e
Removed Boost.org copyrights and replaced with originating authors copyright instead.
...
[SVN r24372]
2017-08-26 15:23:36 +03:00
Dave Abrahams
a4bacb5077
Extended next/prior using patch from Daniel Walker (Daniel.Walker-at-bowneglobal.com)
...
[SVN r21382]
2017-08-26 15:23:36 +03:00
Aleksey Gurtovoy
5ba5f2c2d4
split utility.hpp header
...
[SVN r17472]
2017-08-26 15:23:36 +03:00
Edward Diener
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
morinmorin
bfcf52ace6
Add links to advance and distance
2017-07-23 23:49:30 +09:00
morinmorin
e2c927628c
Add documentation for advance and distance
2017-07-23 23:46:26 +09:00
Edward Diener
ed027c2cce
Merge branch 'develop'
...
# Conflicts:
# include/boost/iterator/reverse_iterator.hpp
boost-1.65.1
boost-1.65.0
2017-07-17 12:03:38 -04:00
Edward Diener
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
Edward Diener
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
Andrey Semashev
c148962bd9
Avoid integer overflow on negating distance
2017-07-10 14:57:40 +03:00
Andrey Semashev
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
Edward Diener
af5f6e49e0
Merge pull request #26 from Lastique/patch-2
...
Remove dependency on boost::prior.
2017-07-09 11:59:18 -04:00
Andrey Semashev
26ee5ba754
Remove dependency on boost::prior.
2017-07-09 18:31:06 +03:00
Edward Diener
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
morinmorin
029277f3ed
Add more tests for ReabableIterator
2017-07-08 13:30:28 +09:00
Edward Diener
847b2a1be3
Added Travis testing
2017-06-30 20:29:49 -04:00
Edward Diener
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
morinmorin
bb54ee7900
Update Jamfile.v2 for new tests
2017-06-29 22:49:05 +09:00
morinmorin
d5b67c7fab
Add tests for boost::advance/distance
2017-06-29 22:09:26 +09:00
morinmorin
663a30f659
Implement BoostIteratorTraversalConcepts-aware boost::advance/distance
2017-06-29 22:06:12 +09:00
Edward Diener
177f719d15
Merge branch 'develop'
2017-04-24 12:24:21 -04:00
Edward Diener
cccbd8c6aa
Test needs both std::typle support and variadic template support.
2017-04-08 16:53:02 -04:00
Edward Diener
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
Edward Diener
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
morinmorin
ca3b7505ce
Add a testcase for trac ticket 12895
2017-03-15 20:41:24 +09:00
drgler
d7c8cccd64
Bug fix for ticket #12895 : Apply remove_reference before remove_cv
2017-03-14 20:45:48 +01:00
Edward Diener
7b627fa679
Merge branch 'develop'
boost-1.64.0-beta2
boost-1.64.0-beta1
boost-1.64.0
2017-01-04 10:58:14 -05:00
Edward Diener
760da84f9c
Merge branch 'develop' of https://github.com/eldiener/iterator into nekko1119-support-lambda-expression
2016-12-17 19:34:48 -05:00
Edward Diener
89d3ec7662
Add inclusion of config.hpp
2016-12-17 19:32:52 -05:00
Edward Diener
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
Edward Diener
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
Edward Diener
11e3715f37
Updated to use unique_ptr instead of auto_ptr when appropriate. Removed unnecessary structs.
2016-11-07 14:01:19 -05:00
Rene Rivera
f2d07f76b5
Add, and update, documentation build targets.
boost-1.63.0
2016-10-10 11:39:50 -05:00
Rene Rivera
53e8ac401f
Add, and update, documentation build targets.
2016-10-07 23:07:34 -05:00
Nathan Wilson
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
nekko1119
c09c8ca2b2
Support lambda expressions in function_input_iterator
2015-12-28 02:45:49 +09:00
Edward Diener
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
Edward Diener
2f72016049
Revert "Fix test compilation"
...
This reverts commit 443dfb9901 .
2015-10-15 23:53:37 -04:00
Edward Diener
5b26a8b3fc
Merge branch 'develop'
2015-10-14 23:59:55 -04:00