DIP25 draft available for destruction
Regan Heath
regan at netmail.co.nz
Thu Feb 7 03:16:42 PST 2013
On Wed, 06 Feb 2013 17:36:24 -0000, Andrei Alexandrescu
<SeeWebsiteForEmail at erdani.org> wrote:
> A good part of that is the recent debate on what &func should do (take
> the address of the function vs. the address of its result). With the
> unsafe meaning out of the way, only the safe one is eligible.
&X takes the address of X.
If X is a symbol which represents an 'int' you get the address of the int
itself, not the address of the int's value.
If X is a symbol which represents a 'function' you should get the address
of the function itself, not the address of that functions value (AKA the
result).
That seems the most logical thing to implement, to me. I think the
confusion arises because ppl conflate the symbol/variable/thing and that
thing's value.
If we implement this we then have to ask how to get the address of the
value. I reckon; if you want the address of the value of the function
then call the function and take the address of that i.e. &func(). Here,
brackets are not optional because they indicate the function is being
called.
Alternately if you don't like that, perhaps &*func. So, if func is "ref
int func()" then this syntax makes it analogous to an int* e.g.
int i = 5;
int *p = &i;
&p // takes the address of the variable 'p'
&*p // takes the address of the variable 'i'
int i = 5;
ref int func() { return i; }
&func // takes the address of func
&*func // takes the address of i
I prefer:
&func() // takes the address of i
because to me that is clearer and nicer looking.
This seems the most logical thing to do, and seems the most flexible to
me. If &func were to take the address of the value of func (result) then
we'd need to invent a new syntax to take the address of func itself and
why do that when we don't really need to. IMO.
R
--
Using Opera's revolutionary email client: http://www.opera.com/mail/
More information about the Digitalmars-d
mailing list