回答編集履歴
2
より詳細な説明を追加
test
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
-
`std::basic_istream` (の基底である `std::basic_ios`) には `operator bool` が定義されています。
|
1
|
+
`std::basic_istream` (の基底である `std::basic_ios`) には `operator bool` が定義されています。 すなわち、 `bool` にキャスト可能で、そのようにキャストした場合にはメンバ関数 `fail` の返却値を逆にした値を返します。
|
2
2
|
|
3
|
+
|
4
|
+
|
3
|
-
|
5
|
+
なんらかの理由 (`eof` に到達した場合を含む) で入力処理がされなかった場合にはストリームに失敗フラグが設定されますので、メンバ関数 `fail` を呼び出した場合、 `bool` にキャストした場合にはそれに基づいた値が返されます。 つまり、繰り返し式の条件式にストリームを置いた場合には `eof` に到達するまで繰り返すという意味に使えます。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
ただし、 `eof` に到達する以外の理由でも失敗フラグが設定されることは有りますので、エラーの対処をしっかりやりたい場合には個別のチェックが必要でしょう。 また、プログラムを読む人にとっても (まさに質問者がそうであるように) 暗黙の型変換を活用されるとどういう意味があるのかわかり難いのでメンバ関数 `fail` を陽に呼ぶ方がより親切な書き方ではあるかもしれません。
|
1
書式指定追加
test
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
std::basic_istream (の基底である std::basic_ios) には operator bool が定義されています。
|
1
|
+
`std::basic_istream` (の基底である `std::basic_ios`) には `operator bool` が定義されています。
|
2
2
|
|
3
|
-
すなわち、 bool にキャスト可能で、メンバ関数 fail の返却値を逆にした値を返します。
|
3
|
+
すなわち、 `bool` にキャスト可能で、メンバ関数 `fail` の返却値を逆にした値を返します。
|