我读过自C ++ 11以来,std::basic_ios
到bool
的转换必须是明确的。 clang只允许在类型转换后将getline
的结果分配给bool。我不明白为什么它接受以下代码:
while( getline(inputfile, newline) )
答案 0 :(得分:1)
然而,有一个例外。如果对于某些表达式e
,声明bool t(e)
格式正确并且在以下某个上下文中,则会调用隐式转换。
对于std::basic_ios
,它有明确的bool
operator,因此有资格在while
语句中进行转换。
请查看Implicit conversions
了解详情。