std::array<float, 3> vec;
Wir tun können ...
vec = {1.1, 1.2, 1.3};
Warum können wir nicht tun, auch die folgende, zum Vergleich?
vec == {1.1, 1.2, 1.3}
Stattdessen scheint es, dass wir zu tun haben ...
vec == std::array<float, 3>({1.1, 1.2, 1.3})
... oder etwas ähnliches.
Typedef'ing erlaubt es mir, so etwas wie zu tun ...
typedef std::array<float, 3> vector;
vec == vector({1.1, 1.2, 1.3})
Aber ist es eine Möglichkeit, nur tun, um ...?
vec == {1.1, 1.2, 1.3}
Kann ich operator==
überladen, um dies zu erreichen? Es scheint, dass der Compiler wissen sollte {1.1, 1.2, 1.3}
als was auch immer auf der linken Seite der ==
zu interpretieren ist. Es tut es für =
. Warum nicht für ==
?
Hier ist eine andere verwandte Frage: [Können Operatoren für initializer_list Literale überladen werden?] (Http://stackoverflow.com/questions/14370043/can-operators-be-overloaded-for-initializer-list-literals) – Pulseczar
Die ausgewählte Antwort hier meine Frage zufrieden, obwohl die Antwort dokumentarische Unterstützung fehlte: [Inhalt des STL-Containers mit einer Initialisiererliste vergleichen] (http://stackoverflow.com/questions/33781070/compare-stl-container-contents-to-an- Initialisierer-Liste) Die dokumentarische Unterstützung scheint in dieser Antwort zu sein: [Initialisiererlisten und RHS von Betreibern] (http://stackoverflow.com/questions/11420448/initializer-lists-and-rhs-of-operators) – Pulseczar