file に関連付けられた stream かどうか

file size 調査用に istream を受け取ってその最後の streampos を返す関数、てのを作ってたんだけどこいつの test してたら関数 std::istream::tellg(0) の返り値が非負の場合 file っぽいことに気付いたのでそういう関数作ってみた。

namespace util {
    namespace file {
        template<typename Char>
        bool is_file(std::basic_istream<Char>& in) {
            return (in.tellg() < 0);
        }
    }
}

http://d.hatena.ne.jp/tanu_ki/20100329/1269871659 を今更読んでツッコミビリティという言葉を思い出したので仕様とか調べずに書いてる。

あーでもこれ何かが stream に関連付けられた時点で有限ってわかってるだけで file とは限らないのか。うーん有限な何かって他に何があるかな。