tellp
空の を呼び出す標準的な動作について質問がありますostringstream
。tellp
最初のものを呼び出す関数 foo があります。
void foo(std::ostream& os)
{
std::ostream::pos_type pos = os.tellp();
// do some stuff.
}
int main()
{
std::ostringstream os;
foo(os);
}
Visual Studio 2005 では、新しく作成された空の変数を使用してこの関数を呼び出すとostringstream
、pos
変数が無効pos_type
に設定されます。これは、Visual Studio 2005 では に設定されpos_type(_BADOFF)
ます。
ofstream
は同じ動作をしません。ここで、有効な をtellp
返します。pos_type(0)
pos_type
これは標準に準拠した動作ですか? この動作は他のコンパイラと一貫していますか?