Ihre Klasse definiert eine explizite Konvertierung in bool, sodass Sie ihre Instanz „t“ direkt in bedingten Anweisungen verwenden können. Diese explizite Konvertierung wirft jedoch die Frage auf: Wo sonst kann „t“ als Bool ohne Besetzung verwendet werden?
Kontextuelle Konvertierungsszenarien
Der C-Standard spezifiziert vier Hauptszenarien, in denen ein Wert kontextabhängig in bool konvertiert werden kann:
Anweisungen:
if-, while-, for-, do-while-Anweisungen
<code class="cpp">if (t) /* statement */;</code>
Ausdrücke:
Negation (!), logisches UND (&&), logisches ODER (||) , ternärer Operator (?)
<code class="cpp">!t t && t2</code>
Kompilierungszeittests:
static_assert, noexclusive, explizit, if constexpr (erfordert den Konvertierungsoperator constexpr)
<code class="cpp">static_assert(t); noexcept(t)</code>
Algorithmen und Konzepte:
NullablePointer, Prädikat oder Komparator Argumente in STL-Algorithmen
<code class="cpp">NullablePointer T std::remove_if(first, last, [&](auto){ return t; });</code>
Zusätzliche Hinweise:
Das obige ist der detaillierte Inhalt vonJenseits von „if'-Anweisungen: Wo sonst kann ein Typ mit einer expliziten „bool'-Konvertierung ohne Umwandlung verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!