Opened 5 years ago
#13202 new Bugs
adjacent_filtered postcondition docs differ from behaviour
Reported by: | Owned by: | Neil Groves | |
---|---|---|---|
Milestone: | To Be Determined | Component: | range |
Version: | Boost Development Trunk | Severity: | Optimization |
Keywords: | range, adjacent_filtered, documentation, postcondition, predicate, adaptor | Cc: |
Description
I think the documentation for adjacent_filtered
's postcondition, ie:
For all adjacent elements
[x,y]
in the returned range,bi_pred(x,y)
istrue
.
…isn't quite right. For example, this:
#include <boost/range/adaptor/adjacent_filtered.hpp> #include <iostream> #include <vector> int main() { const std::vector<int> a = { 0, 1, 2, 3, 4, 5, 6 }; const auto b = a | boost::adaptors::adjacent_filtered( [] (const int &x, const int &y) { return ( y % 2 == 1 ) && ( y == x + 1 ); } ); for (const auto &x : b) { std::cerr << x << "\n"; } }
…outputs:
0 1 3 5
Yet two of the pairs of adjacent elements [x,y]
in this range fail bi_pred(x,y)
(because they differ by 2, not 1).
I think it's more like: bi_pred
is true on each element in the returned range preceded by the element that preceded it in the original range (not in the returned range).
Note:
See TracTickets
for help on using tickets.