Then, I think it can be expressed with following rules:

Type `T` is equal to type `S` if:

  1. None of `T` and `S` is object, enumeration, concept, pointer-to-object, 
reference-to-object, or a distinct or generic type, while `T` is structurally 
equivalent to `S`.
  2. `T` is object, enumeration, pointer-to-object, reference-to-object, or a 
distinct or generic type and is declared in the form, or any equivalent form 
of, `type T = S`, where `S` is not the keyword `object`, the keyword `enum`, 
the keyword `distinct`, the phrase `ptr object`, or the phrase `ref object`.
  3. `T` is object, enumeration, pointer-to-object, reference-to-object, or a 
distinct or generic type, and is declared in the form, or any equivalent form 
of, `type T = U`, where `U`, by rule 2, is a type equal to `S`.


Reply via email to