Ich bin über diesen Code gestolpert.Wie würde std :: ostringstream in bool konvertieren?
std::ostringstream str;
/// (some usage)
assert(! str);
Was bedeutet ostringstream
signify wenn sie in einem bool
Kontext verwendet?
Ist das möglicherweise eine falsche Verwendung, die passiert, um zu kompilieren und auszuführen?
Tatsächlich wird dies durch Überladen des Void * Cast-Operators erreicht. WENN der Bool-Cast-Operator verwendet wurde, könnte der Stream in einem arithmetischen Kontext verwendet werden, und der Compiler würde in boolears arbeiten und den Wert 0/1 verwenden. Ein void * kann andererseits nicht in einem arithmetischen Kontext verwendet werden, sondern kann in einem bool-Kontext verwendet werden, wenn NULL-Zeiger als falsch ausgewertet werden. Aber in diesem Fall der Betreiber! wird verwendet, um einen bool-Wert explizit zurückzugeben. –
Guter Punkt. Das ist es, was ich aus dem Gedächtnis bekomme. ;) – Naaff
Was würde das speziell für einen ostringstream bedeuten? Vielleicht nicht mehr im Speicher? –