ofstreamのopen失敗時の例外メッセージは、なぜbasic_ios::clearになるのでしょうか?
以下のようなコードでファイルオープンエラーを検出したいです。
#include <iostream>
#include <fstream>
int main()
{
std::ofstream fout;
try
{
fout.exceptions(std::ofstream::failbit);
fout.open("/tmp/hoge/hoge.txt");
}
catch(const std::ofstream::failure e)
{
std::cout << "msg=" << e.what() << std::endl;
}
return 0;
}
実行結果は、
$ ./a.out
msg=basic_ios::clear
となります。
msg=basic_ios::failbit
のような結果を期待しているのですが、なぜbasic_ios::clearになるのでしょうか?
それとも私の実装方法に間違いがあるのでしょうか?