die ich addierte folgendes Mitglied in meiner Klasse:Gleichheitsprüfung constexpr Instanz
constexpr static folly::Unit nullUnit {};
Hier der Link zur Torheit ist :: Unit:
https://github.com/facebook/folly/blob/master/folly/Unit.h
auf einer Flagge Je würde ich zurückgeben entweder folly :: unit oder die nullUnit:
if (mutate_resp->processed()) {
LOG(INFO) << "check returns folly::unit";
return folly::unit;
}
LOG(INFO) << "check returns nullUnit";
return nullUnit;
Ich mache Gleichheit Besuche wie folgt aus:
if (ret == folly::unit) return true;
return false;
Es scheint jedoch, der Vergleich immer wahr ist, auch wenn ich die folgenden in Ausgabe sah:
I0608 22:43:37.729920 18225 raw-async-table.cc:132] check returns folly::unit
I0608 22:43:37.731446 18225 raw-async-table.cc:135] check returns nullUnit
Jeder Hinweis
Ihr Operator '' '' == '' '' gibt immer true zurück. Warum sollten Sie erwarten, dass es jemals falsch ist? – mascoj
Dieser 'Unit' Typ ist mehr oder weniger ein' void', der instanziiert werden kann. Eine Instanz repräsentiert daher das * Fehlen eines Wertes, * und es ist definiert, dass alle 'Einheit'-Objekte einander gleich sind. Es scheint, dass Sie den Eindruck haben, dass "Unit" ein "Symbol" -Typ ist, was die Kommentare in der verknüpften Datei überhaupt nicht anzeigen. – cdhowie
Nachdem ich Unit.h gelesen hatte, kam ich zu demselben Verständnis :-) – Ted