[fpc-devel] New feature announcement: constant parameters for generics
pascaldragon at googlemail.com
Mon Apr 27 07:46:04 CEST 2020
Am 26.04.2020 um 23:42 schrieb Benito van der Zander:
> Hi Sven,
>> It's not that simple. In principle you're right that the compiler
>> could try to merge more implementations, but this does not depend on
>> the declaration of the generic, but the use of the parameter types.
> I mostly use generics for containers, especially hashmaps. They only
> stores the values and never calls specific methods on them
Well, nice and well for /you/ then, but there are many more uses for
generics. And as a compiler developer I /must/ think about these cases
>> Not to mention that your TBaseHashMap would not work with managed
> That would need be handled separately. There are probably also people
> who want a container that calls .free on TObject descendants.
The user should not need to care about that, especially for general base
Also assume you have a record and a hashmap that stores them. Now you
add a string to the record which turns it into a managed one and
suddenly your code will no longer work, probably resulting in subtle
bugs or memory leaks. That's /not/ what should happen for merely adding
a string. It's already bad enough that this happens with the Pascal
style I/O we don't need to have this with base container types.
For calling Free we have explicit classes. But the difference between
managed types vs. not-managed types is subtle and can change - as
mentioned above - by merely adding a field.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the fpc-devel