
On Thursday 11 March 2010 11:39:10 Steven Watanabe wrote:
Ugh. That makes things difficult then. There's no simple way to define a function that just takes a pair of iterators and does something with them. Surely others have tried to do things like this before. What's the typical solution?
Use a recursive function template or use one of fusion's algorithms.
But the non-compiling example in the first testcase shows that a fusion
algorithm doesn't provide a general solution. The sequence could be the
result of an application of transform() or some other algorithm that causes
problems. Unless there's some other technique I've missed.
In any case, I wasn't completely clear about what my goal is. Ultimately
I'd like to initialize a class with a pair of iterators:
struct foo {
vector<int> data;
template<typename InputIterator>
foo(InputIterator begin, InputIterator end) : data(begin, end) {}
};
foo could be initialized from many different kinds of sources:
vector<int> mydata;
foo f(mydata.begin(), mydata.end());
fusion::vector