Spaceship-operator: why the data-members must be public / triggers ICE

Klaus Doldinger klaus.doldinger64@gmail.com
Wed Nov 13 09:24:00 GMT 2019


Hi all,

in the follwing example

#include <compare> // omitting trigger ICE

template<auto V>
struct A {};

struct B {
    inline constexpr auto operator<=>(const B& rhs) const = default;
private:
    int value; // why must this member be public?
};

int main() {
    A<B{}> t;
}

why must the member value be public?

Side note: if I omit #include <compare> it triggers an ICE.

Compiler: gcc-trunk



More information about the Gcc-help mailing list