„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Jenseits von „if“-Anweisungen: Wo sonst kann ein Typ mit einer expliziten „bool“-Konvertierung ohne Umwandlung verwendet werden?

Jenseits von „if“-Anweisungen: Wo sonst kann ein Typ mit einer expliziten „bool“-Konvertierung ohne Umwandlung verwendet werden?

Veröffentlicht am 18.01.2025
Durchsuche:960

Beyond `if` Statements: Where Else Can a Type with an Explicit `bool` Conversion Be Used Without Casting?

Kontextuelle Konvertierung in „bool“ ohne Umwandlung zulässig

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 Umwandlung verwendet werden?

Kontextkonvertierungsszenarien

Der C-Standard spezifiziert vier Hauptszenarien, in denen ein Wert kontextabhängig konvertiert werden kann bool:

Anweisungen:

  • if, while, for, do-while-Anweisungen

    if (t)
      /* statement */;

Ausdrücke:

  • Negation (!), logisches UND (&&), logisch ODER (||), ternärer Operator (?)

    !t
    t && t2

Kompilierungszeittests:

  • static_assert, noException, explizit, wenn constexpr (constexpr-Konvertierung erforderlich Operator)

    static_assert(t);
    noexcept(t)

Algorithmen und Konzepte:

  • NullablePointer, Prädikat- oder Komparatorargumente in STL-Algorithmen

    NullablePointer T
    std::remove_if(first, last, [&](auto){ return t; });

Zusätzliche Hinweise:

  • Einschränkende Konvertierungen von anderen Ganzzahlen als 0 und 1 sind in Tests zur Kompilierungszeit nicht zulässig (C 26 ab).
  • Das Mischen von const- und nicht-const-Konvertierungsoperatoren kann zu Verwirrung führen.
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3