您的类定义了到 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?
上下文转换场景
C 标准指定了四种值可以根据上下文转换为 bool 的主要场景:
语句:
if、while、for、do-while 语句
<code class="cpp">if (t) /* statement */;</code>
表达式:
否定 (!)、逻辑与 (&&)、逻辑或 (||) 、三元运算符 (?)
<code class="cpp">!t t && t2</code>
编译时测试:
static_assert、noexcept、显式、 if constexpr (需要 constexpr 转换运算符)
<code class="cpp">static_assert(t); noexcept(t)</code>
算法和概念:
NullablePointer、谓词或比较器STL 算法中的参数
<code class="cpp">NullablePointer T std::remove_if(first, last, [&](auto){ return t; });</code>
附加说明:
以上是除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?的详细内容。更多信息请关注PHP中文网其他相关文章!