{ %NORUN } program tw30524a; {$ifdef FPC} {$MODE DELPHI} {$endif} {uses Generics.Defaults;} type Tuple = record Item1: T; class operator Equal( a, b: Tuple ): Boolean; // FPC Error: Compilation raised exception internally class operator NotEqual( a, b: Tuple ): Boolean; end; Tuple = record class function Create( Item1: T ): Tuple; overload; static; end; class function Tuple.Create( Item1: T ): Tuple; begin Result.Item1 := Item1; end; class operator Tuple.Equal( a, b: Tuple ): Boolean; begin Result := False;//TEqualityComparer.Default.Equals( a.Item1, b.Item1 ); end; class operator Tuple.NotEqual( a, b: Tuple ): Boolean; begin Result := not( a = b ); end; var t: Tuple; begin t := Tuple.Create(42); end.