I'll amend that - you can write a general form:

result_t fnv1a_until_position(I f, P p)

Where the predicate is passed the iterator f. I believe we have something like a for_each_position that does something similar.