id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 9851,Iterators from rang have different category than the range,anonymous,Neil Groves,"According to [http://www.boost.org/doc/libs/1_55_0/libs/range/doc/html/range/reference/adaptors/reference/transformed.html the documentation for transformed], the category is single pass, which means that it should be safe to include side effects in the function used: {{{ int main() { int transformed_called = 0, filtered_called = 0; vector a{ 1, 2, 3 }; auto b = (a | transformed([&](int aa) { ++transformed_called; return aa + 1; }) | filtered([&](int aa) { ++filtered_called; return aa < 4; })); auto c = vector(b::begin(b), b::end(b)); cout << transformed_called << "", "" << filtered_called << endl; return 0; } }}} However, the output of this program is ""5, 3"" instead of the expected ""3, 3"", which means that the iterators returned by begin() and end() are forward iterators. I guess they should be input iterators (single pass) instead?",Bugs,closed,Boost 1.56.0,range,Boost 1.55.0,Problem,fixed,,