Der nicht standardmäßige Operator <=> generiert nicht == und !=C++

Programme in C++. Entwicklerforum
Guest
 Der nicht standardmäßige Operator <=> generiert nicht == und !=

Post by Guest »

Ich stoße auf ein seltsames Verhalten mit dem neuen Raumschiffoperator in C++20. Ich verwende den Visual Studio 2019-Compiler mit /std:c++latest.

Dieser Code lässt sich wie erwartet gut kompilieren:

Code: Select all

#include 

struct X
{
int Dummy = 0;
auto operator(const X&) const = default; // Default implementation
};

int main()
{
X a, b;

a == b; // OK!

return 0;
}
Wenn ich jedoch X wie folgt ändere:

Code: Select all

struct X
{
int Dummy = 0;
auto operator(const X& other) const
{
return Dummy  other.Dummy;
}
};
Ich erhalte den folgenden Compilerfehler:

Code: Select all

error C2676: binary '==': 'X' does not define this operator or a conversion to a type acceptable to the predefined operator
Ich habe das auch bei Clang ausprobiert und bekomme ein ähnliches Verhalten.

Das würde ich tun Ich freue mich über eine Erklärung, warum die Standardimplementierung „operator==“ korrekt generiert, die benutzerdefinierte Implementierung jedoch nicht.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post