std::basic_ios 显式转换为 bool
Explicit conversion of std::basic_ios to bool
我读到,从 C++11 开始,从 std::basic_ios
到 bool
的转换必须是显式的。 clang 允许仅在类型转换后将 getline
的结果分配给 bool。我不明白的是为什么它接受以下代码:
while( getline(inputfile, newline) )
?
但是,有一个例外。如果对于某些表达式 e
,声明 bool t(e)
格式正确并且在以下上下文之一中,将调用隐式转换。
- 控制if、while、for的表达式
- 逻辑运算符 !、&& 和 ||
- 条件运算符 ?:
- static_assert
- 没有例外
在 std::basic_ios
的情况下,它有一个明确的 bool
operator,因此有资格在 while
语句中进行转换。
查看 Implicit conversions
了解更多详情。
我读到,从 C++11 开始,从 std::basic_ios
到 bool
的转换必须是显式的。 clang 允许仅在类型转换后将 getline
的结果分配给 bool。我不明白的是为什么它接受以下代码:
while( getline(inputfile, newline) )
?
但是,有一个例外。如果对于某些表达式 e
,声明 bool t(e)
格式正确并且在以下上下文之一中,将调用隐式转换。
- 控制if、while、for的表达式
- 逻辑运算符 !、&& 和 ||
- 条件运算符 ?:
- static_assert
- 没有例外
在 std::basic_ios
的情况下,它有一个明确的 bool
operator,因此有资格在 while
语句中进行转换。
查看 Implicit conversions
了解更多详情。