{ %NORUN } program tw31120; {$mode objfpc} type TTest = class generic class procedure PrintDefault(); end; generic Function GetDefault(): T; Begin result := default(T); End; generic Procedure PrintDefault(); procedure print(); begin writeln(specialize GetDefault()) end; Begin print() End; generic class procedure TTest.PrintDefault(); procedure print(); begin writeln(specialize GetDefault()) end; begin print() end; Begin specialize PrintDefault(); specialize PrintDefault(); TTest.specialize PrintDefault(); TTest.specialize PrintDefault(); End.