2018-04-10 20:19:28 +03:00
|
|
|
|
type
|
|
|
|
|
|
SumTC[T] = typeclass
|
|
|
|
|
|
function sum(v1, v2: T): T;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
SumTC[integer] = instance
|
|
|
|
|
|
function sum(v1, v2: integer): integer;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := v1 + v2;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function Sum3<T>(v1, v2, v3: T): T; where SumTC[T];
|
|
|
|
|
|
begin
|
2018-04-20 10:40:55 +03:00
|
|
|
|
Result := SumTC[T].sum(v1, SumTC[T].sum(v2, v3));
|
2018-04-10 20:19:28 +03:00
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
|
var v1, v2, v3, res: integer;
|
|
|
|
|
|
|
2018-04-20 12:03:38 +03:00
|
|
|
|
res := Sum3&[integer](v1, v2, v3);
|
2018-04-10 20:19:28 +03:00
|
|
|
|
|
|
|
|
|
|
Write(res);
|
|
|
|
|
|
end.
|