• 0 Posts
  • 3 Comments
Joined 1 year ago
cake
Cake day: July 8th, 2023

help-circle
  • It makes perfect sense actually. I did write another comment here if you are interested.

    This is how operator overloads were written going back to the initial version of C++ back in 1985. The only new thing is that we can now add = default to get the compiler to generate a default implementation that compares all the member variables for you.


  • Maybe to a non C++ dev, but a lot of C++ is probably incomprehensible to a non C++ dev, just like there are other laguages that are incomprehensible to C++ devs. To me it makes perfect sense as it works just like all the other operator overloads.

    auto - let the compiler deduce return type

    operator<=> - override the spaceship operator (pretty sure it exists in python too)

    (const ClassName&) - compare this class, presumably defined in Class name, with a const reference of type Class name, i.e. its own type.

    const - comparison can be made for const objects

    = default; - Use the default implementation, which is comparing all the member variables.

    An alternate more explicit version, which is actually what people recommend:

    auto operator<=>(const ClassName&, const ClassName&) = default;

    if I just want to have less than comparison for example I would:

    This one makes it explicit that you’re comparing two Class name objects.

    if I just want to have less than comparison for example I would:

    auto operator<(const ClassName&, const ClassName&) = default;

    If I need to compare against another class I could define: auto operator<(const ClassName&, const OtherClass&)