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

Jonathan Wakely jwakely.gcc@gmail.com
Wed Nov 13 10:35:00 GMT 2019


On Wed, 13 Nov 2019 at 09:24, Klaus Doldinger
<klaus.doldinger64@gmail.com> wrote:
>
> 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?

Looks like a bug, please report it to bugzilla.

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

And please report that to bugzilla too, as a second bug.



More information about the Gcc-help mailing list