Bug oder Feature?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut

Bug oder Feature?

Beitragvon Warf » 19. Aug 2019, 18:41 Bug oder Feature?

Hey, ich bin grade dabei eine eigene Generische Listenimplementation zu bauen mit Focus auf Performance und habe etwas gefunden das m.E. nach eigentlich gehen sollte, aber nen Syntaxfehler wirft:

Code: Alles auswählen
generic TBitCompare<T> = class
class function equals(const A: T; const B: T): Boolean; inline;
class function Compare(const A: T; const B: T): Integer; inline;
end;
 
generic TFGList<T, Comparator> = class
[...]
end;
 
generic TFGDefaultList<T> = class(specialize TFGList<T, specialize TBitCompare<T>>);


Die Idee ist simpel, statt nem Funktionspointer zu übergeben, für den Comparator, wollte ich eine Generische Klasse verwenden, mit Statischen Methdoen, die nach dem Inlineing komplett wegoptimiert werden sollte (im Vergleich dazu, ein Funktionspointer muss immer den Jump ausführen, was natürlich mehrere Operationen bedeutet). Da ich für den Standardfall gerne eine Klasse anbieten möchte die den Comparator bereits gesetzt hat mit einem Standard Bitwise Compare, wollte ich also die TFGDefaultList definieren, die die TBitCompare Klasse für den Übergebenen Typen verwendet.

Anscheinend geht Specialize in einem anderen Specialize nicht. Da wollte ich mal fragen ob einer von euch vielleicht weiß ob das so gewollt ist, oder ob das eventuell sogar ein Bug ist, und eigentlich gehen sollte
Warf
 
Beiträge: 1330
Registriert: 23. Sep 2014, 16:46
Wohnort: Aachen
OS, Lazarus, FPC: MacOS | Win 10 | Linux | 
CPU-Target: x86_64
Nach oben

• Themenende •

Zurück zu Freepascal



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried