Finds declarations of assign operators with the wrong return and/or argument types and definitions with good return type but wrong return statements.

  • The return type must be Class&.
  • The assignment may be from the class type by value, const lvalue reference, non-const rvalue reference, or from a completely different type (e.g. int).
  • Private and deleted operators are ignored.
  • The operator must always return *this.