- ios[meta header]
- std[meta namespace]
- basic_ios[meta class]
- function[meta id-type]
operator void*() const;
現在の状態値が正常を示す値になっていることを判定する変換関数。
fail
()
が true
の場合、ヌルポインタ。それ以外の場合、何らかの非ヌルポインタ。
- 本関数と
good
()
は結果が異なる事に注意。本関数はeofbit
が設定されていても非ヌルポインタ(つまり真)を返すが、good
()
はeofbit
が設定されている場合false
を返す。 - C++03 までは本関数によって
basic_ios
を条件式の文脈等で明示的な変換無しに使用することができるようにしていたが、C++11 でユーザ定義変換関数にexplicit
を指定することで当該変換の暗黙適用を回避できるようになったことから、より意図が明確となるようにoperator bool
()
が提供され、本関数は廃止された。
なお、if
文やwhile
文の条件式で使用している分には問題とならないが、この変更によって一部 C++03 までは問題の無かったコードがコンパイルエラーとなる等の非互換が生じている。// C++03 まではコンパイル可能だが C++11 からはコンパイルエラーになる例 bool b1 = std::cout; bool b2 = std::cout == NULL;
explicit operator void*() const {
return fail() ? NULL : const_cast<basic_ios*>(this);
}
- fail[link fail.md]
- basic_ios[link ../basic_ios.md]
- C++03 まで
libc++ には C++03 モードでも本関数は存在しない。