explicit operator bool() const;
概要
現在の状態値が正常を示す値になっていることを判定する変換関数。
戻り値
!fail()
。
備考
- 本関数と
good()
は結果が異なる事に注意。本関数はeofbit
が設定されていてもtrue
を返すが、good()
はeofbit
がセットされている場合false
を返す。 - C++03 までは本関数とほぼ等価の機能が
operator void*()
によって提供されていたが、C++11 でユーザ定義変換関数にexplicit
を指定することで当該変換の暗黙適用を回避できるようになったことから、より意図が明確となるように本関数が提供され、operator void*()
は廃止された。
なお、if
文やwhile
文の条件式で使用している分には問題とならないが、この変更によって一部 C++03 までは問題の無かったコードがコンパイルエラーとなる等の非互換が生じている。
実装例
explicit operator bool() const {
return !fail();
}
バージョン
言語
- C++11
備考
libc++ では C++03 モードでも本関数が使用可能である。(ただし、explicit
ではない)