将std :: basic_ios显式转换为bool

时间:2015-01-20 14:17:07

标签: c++11

我读过自C ++ 11以来,std::basic_iosbool的转换必须是明确的。 clang只允许在类型转换后将getline的结果分配给bool。我不明白为什么它接受以下代码:

while( getline(inputfile, newline) )

1 个答案:

答案 0 :(得分:1)

然而,有一个例外。如果对于某些表达式e,声明bool t(e)格式正确并且在以下某个上下文中,则会调用隐式转换。

  • 控制if,while,for
  • 的表达式
  • 逻辑运营商!,&&和||
  • 条件运算符?:
  • static_assert
  • noexcept

对于std::basic_ios,它有明确的bool operator,因此有资格在while语句中进行转换。

请查看Implicit conversions了解详情。