* 8.21.2 Syntax: Equality expressions
Equality =
Δ Expression Comparison Expression
Comparison =
Δ "=" | "/=" | "~" | "/~"
* 8.21.3 Semantics: Equality Expression Semantics
The Boolean_expression e ~ f has value true if and only if the values of e and f are both attached
and such that e.is_equal (f) holds.
The Boolean_expression e = f has value true if and only if the values of e and f are one of:
1 . Both void.
2 . Both attached to the same object with reference semantics.
3. Both attached to objects with copy semantics, and such that e ~ f holds.
Informative text
The form with ~ always denotes object equality.
The form with = denotes reference equality if
applicable, otherwise object equality. Both rely, for object equality, on function is_equal — the
version that can be redefined locally in any class to account for a programmer-defined notion of
object equality adapted to the specific semantics of the class.
-- Javier