Hi,
I don't think a container is a good choice. Streams were invented for a reason (regardless of the language), which is to allow tranfers of data without loading it all in memory. If a user wants to load directly from/to a file, a network or any out-of-memory resource, he needs streams in order to minimize memory consumption. If however he wants it all in a container for any reason, stream iterators are here for that.
Regarding variants, I implemented them for a few algos (this is not "public-facing" for the time being) and I did it for WTK as it was useful for testing. For now the implementation is a little bit boiler-plate, with most of the magic repeated in all algos. Moving forward I intend to factorize but I need the big picture first
Regards
Bruno