Folgendes funktionierte in XE7 noch, in 10 Seattle muss ich den Typ explizit angeben sonst sagt er mir
Code:
[dcc32 Fehler] Project1.dpr(20): E2531 Methode 'someGenericStuff' erfordert explizite Typargumente
Ich finde in den Changelogs nichts. XE8 habe ich nicht ausprobiert. Gibt es irgendetwas diese Änderungen beschreibt?
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
type
TSomeClass = class
class procedure someGenericStuff<T: class>(const arg: T);
class procedure someOtherGenericStuff<T: class>(const arg: T);
end;
{ TSomeClass }
class procedure TSomeClass.someGenericStuff<T>(const arg: T);
begin
someOtherGenericStuff(arg); // Geht immer
someGenericStuff
{$IF CompilerVersion > 28}<T>{$ENDIF} //Sonst E2531
(arg);
end;
class procedure TSomeClass.someOtherGenericStuff<T>(const arg: T);
begin
//
end;
begin
TSomeClass.someGenericStuff(nil);
end.
(Ja, der Code macht keinen Sinn, es geht nur ums Kompilieren)