Greetings. There exists a fairly common need to apply regexp matching to streams, rather than to blocks of data. Streams are represented by input iterators, which have no ability to decrement their value. On the other hand, xpressive requires a bidirectional iterator, to go back and forth as required by backtracking (if I understand correctly). One approach to work around this limitation is to create an iterator adapter, which will store a copy of every character delivered by input iterator and provide expressive with bidi iterator to work with. So the question is, how can one establish the size for this iterator adapter's internal storage so as to avoid match failures due to incomplete storage and avoid storing too much unnecessary data? I suppose, the storage can be reset when the match is reported. This, however, still leaves an open problem for situations where matches are separated by, possibly, gigabytes of non-matching data. Alternatively, may there be a way to relax the iterator requirements of the xpressive library itself? If xpressive could be made to store partial match data within its data structures, bidi iterators would not be strictly necessary. Thanks.