Std :: Three_way_Comparable gibt FALSE für einen Nicht-Default-Operator <=> `falsch zurückC++

Programme in C++. Entwicklerforum
Anonymous
 Std :: Three_way_Comparable gibt FALSE für einen Nicht-Default-Operator <=> `falsch zurück

Post by Anonymous »

Ich versuche, den Bediener in einer Klasse zu definieren. Wenn ich jedoch eine nicht defaugte Implementierung angehe, stn.

Code: Select all

#include 
#include 

using namespace std;

struct UDTC
{
int i_;
UDTC(int i) : i_(i) {}

#if 1
friend std::strong_ordering operator(const UDTC &lhs, const UDTC &rhs) {
return lhs.i_  rhs.i_;
}
#else
friend std::strong_ordering operator(const UDTC &lhs, const UDTC &rhs) = default;
#endif
};

int main(void)
{
if constexpr (std::three_way_comparable) {
fprintf(stderr, "UDTC is three_way_comparable\n");
} else {
fprintf(stderr, "UDTC is NOT three_way_comparable\n");
}
}
Wenn ich dies mit Visual Studio 2022 oder GCC 12 ausführe, wird die Funktion standardmäßig, drei_way_Comparable true zurück. Wenn ich meine eigene Implementierung gebe, gibt sie false zurück. Ich kann nur annehmen, dass meine Implementierung irgendwie unvollständig ist, aber ich sehe nicht, was ich fehlt.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post