Re: Procedural parameters
Sven Barth via fpc-pascal <[email protected]>
| Newsgroups | gmane.comp.compilers.free-pascal.general |
|---|---|
| Message-ID | <[email protected]> |
Am 15.12.2024 um 13:11 schrieb Hairy Pixels via fpc-pascal: > On Dec 15, 2024 at 6:28:25 PM, Hairy Pixels <[email protected]> wrote: >> Also noteworthy is ISO standard can accommodate generics which >> Borland’s design can not. > > Wait, I’m wrong on this, you can use generic proc types. The problem > with generics are pointers to T. For example that below is not possible. > > type > generic TFindNodeComparator<T> = function(item: ^T): Boolean; > > generic function FindNode<T>(func: specialize TFindNodeComparator<T>): ^T; It's not as if it is impossible to workaround this limitation: === code begin === program tpointerrec; {$mode objfpc} {$modeswitch advancedrecords} type generic TPointer<T> = record type PT = ^T; end; generic TFindNodeComparator<T> = function(item: specialize TPointer<T>.PT): Boolean; generic function FindNode<T>(func: specialize TFindNodeComparator<T>): specialize TPointer<T>.PT; begin end; function Compare(item: specialize TPointer<LongInt>.PT): Boolean; begin end; begin specialize FindNode<LongInt>(@Compare); end. === code end === Regards, Sven _______________________________________________ fpc-pascal maillist - [email protected] https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal