About structs and performant handling
Zach the Mystic
reachzach at gggggmail.com
Mon Mar 11 23:36:29 PDT 2013
On Monday, 11 March 2013 at 10:55:50 UTC, Namespace wrote:
> On Sunday, 10 March 2013 at 19:27:01 UTC, Namespace wrote:
>> But you could prohibit any manipulation of a '&' parameter.
>> Eg. you could make him 'scope' by default (if 'scope' will
>> work someday).
>
> A better solution would be to require that a Parameter with '&'
> need 'const scope' as storage class.
> So the syntax would be:
> void foo(in A& a) {
> In my opinion, there is then no reason to worry about whether
> it is an lvalue or an rvalue. It cannot be changed or
> referenced.
>
> This:
> void foo(A& a) {
> without const scope would cause an error like : "Error: '&'
> requires const scope."
>
> AFAIK the syntax 'in ref' was suggested by Kenji but was
> rejected for some reasons.
Your point reminds me of the fact that D has no "inline" or
"register" keywords. You probably couldn't pick better experts
than the D compiler builders for deciding whether or not those
two keywords are necessary. I guess there's not a clear solution
to this question, or it would have been settled a while ago.
Maybe it should be called the "performance ref" issue, to
distinguish it from other ref issues, "@safe ref", "auto ref",
etc.
More information about the Digitalmars-d
mailing list