Maison >développement back-end >C++ >Au-delà des instructions « if » : où d'autre un type avec une conversion « bool » explicite peut-il être utilisé sans conversion ?
Votre classe définit une conversion explicite en bool, vous permettant d'utiliser son instance 't' directement dans les instructions conditionnelles. Cependant, cette conversion explicite pose la question : où d'autre ne peut-on pas utiliser "bool" sans transtypage ?
Scénarios de conversion contextuelle
La norme C spécifie quatre Principaux scénarios dans lesquels une valeur peut être convertie contextuellement en bool :
Déclarations :
instructions if, while, for, do-while
<code class="cpp">if (t) /* statement */;</code>
Expressions :
Négation (!), ET logique (&&), OU logique (||) , opérateur ternaire (?)
<code class="cpp">!t t && t2</code>
Tests au moment de la compilation :
static_assert, nosauf, explicite, if constexpr (nécessite l'opérateur de conversion constexpr)
<code class="cpp">static_assert(t); noexcept(t)</code>
Algorithmes et concepts :
NullablePointer, prédicat ou comparateur arguments dans les algorithmes STL
<code class="cpp">NullablePointer T std::remove_if(first, last, [&](auto){ return t; });</code>
Remarques supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!