>>390
それは勘違い。std::basic_ostreamの反復子は出力反復子(ostream iterator)のため、
tellp()、seekp()メンバ関数の意味を正しくインプリメントできないのだ。

同様にして、std::basic_istreamの反復子は入力反復子(input iterator)のため、
tellg()、seekg()メンバ関数の意味を正しくインプリメントできない。

tellp()、tellg()、seekp()、seekg()は、前方反復子(forward iterator)でのみ、正しい
本来の意味のある値を返す。この前方反復子を備えているクラスは、std::basic_fstreamと
std::basic_stringstreamだけだ。

>>371の、random access iteratorというのは間違い。そこまで厳しい要件を必要と
しない。しかし、おっしゃる通り、std::basic_ostreamとstd::basic_istreamを継承した
クラスでないと、tellp()〜seekg()メンバ関数が使えない。従ってstd::vectorのような
ストリームを継承したのではないくコンテナは、それらの特別なメンバ関数がない。

当然std::listのような双方向反復子(bidirectional iterator)を備えたクラスでも、
seek?()、tell?()が使えない。