New-style for on an iterator-range of filter_iterator of strings crashes/hangs

Hello,
Using g++ 4.8.1 (g++ (Ubuntu/Linaro 4.8.1-10ubuntu8) 4.8.1) with boost
1.5.3, building the code below with
{{{
g++ -o example/filter.out -std=c++0x -Wall -g -rdynamic
-I/usr/include/boost example/filter.cpp
}}}
{{{
#include
<vector>
#include <string>
#include <iostream>
#include <functional>
#include

AMDG On 11/23/2013 11:12 AM, Ami Tavory wrote:
<snip> typedef filter_iterator
, vector<string>::const_iterator> filter_it_t; auto r = make_iterator_range(filter_it_t(fn, ss.begin()), filter_it_t(fn, ss.end())); <snip> yields an executable that crashes with {{{ Segmentation fault (core dumped) }}}
<snip>
You're not constructing the filter_iterators correctly.
From the documentation:
filter_iterator(Predicate f, Iterator x, Iterator end = Iterator()); Effects: Constructs a filter_iterator where m_iter is either the first position in the range [x,end) such that f(*m_iter) == true or else``m_iter == end``. The member m_pred is constructed from f and m_end from end. You need to pass the end iterator as well. (Or use the Boost.Range version) In Christ, Steven Watanabe
participants (2)
-
Ami Tavory
-
Steven Watanabe