• tetris11@lemmy.ml
      link
      fedilink
      arrow-up
      17
      ·
      1 month ago

      You just need to break the syntax apart and look at it from the LHS and the RHS seperately.

      In layman’s terms: constantine felt boxed in by his social class which left him often at dagger-ends to the operations on his car. Unable to keep up with the constant payments, he defaulted on the loan.

      See? Easy.

    • flying_gel@lemmy.world
      link
      fedilink
      arrow-up
      7
      ·
      1 month ago

      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&)