您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?
上下文转换场景
C 标准指定了四种值可以根据上下文转换为的主要场景bool:
语句:
if、while、for、do-while 语句
if (t)
/* statement */;
表达式:
否定 (!)、逻辑 AND (&&)、逻辑OR (||)、三元运算符 (?)
!t
t && t2
编译时测试:
static_assert、noexcept、explicit、if constexpr(需要 constexpr 转换运算符)
static_assert(t);
noexcept(t)
算法和概念:
STL 算法中的 NullablePointer、谓词或比较器参数
NullablePointer T
std::remove_if(first, last, [&](auto){ return t; });
附加说明:
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3