On Wed, 27 Jul 2016, Jonas Maebe wrote:
Michael Van Canneyt wrote on Wed, 27 Jul 2016:
On Wed, 27 Jul 2016, Maciej Izak wrote:
TNullable<T: record> = proxy record
...
looks good for me, even better than pure record, the context is more
clear.
Yes. Exactly what Jonas wanted to achieve, I suppose.
A bitpacked or packed record still behaves like a regular record. If does not
behave like a record, it should not be called a record.
Well, it can be a special kind of type helper.
Symply extend the syntax for type helper with a new word.
Additionally, the @@/@ operator thing is inconsistent with how e.g.
ansistrings or dynamic arrays work: @ansistringvar does not get you the
address of the first character, but of the variable itself. Similarly, there
is no @@ansistringvar to get the address of the ansistring variable itself
rather than of the first character, even though the 'value' of an ansistring
starts at that first character.
Procedure variables in Turbo Pascal (and Delphi) are the only type for which
this approach was ever was used, and given that they didn't use it anymore
later on may indicate that they also thought it was not a very good idea in
hindsight. Let alone that we would also start accepting @@@-expressions
(https://github.com/maciej-izak/PascalSmartPointers/blob/master/tests/tdefault21.pp
).
Why not introduce an address operator ?
operator @ (T : MyType) : Pointer;
Michael.
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel