www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Const lazy arguments?

reply bearophile <bearophileHUGS lycos.com> writes:
I ask here first before submitting about this to Bugzilla.

If lazy arguments can't be lvalues:


void foo(lazy int x) {
    x = x;
}
void main() {}

==>
test.d(2): Error: lazy variables cannot be lvalues


What's the point of accepting const lazy arguments?

void foo(const lazy int x) {}
void main() {}

Bye,
bearophile
Jan 10 2012
parent reply Ben Davis <entheh cantab.net> writes:
If you had a "const lazy SomeClass con" and a "lazy SomeClass mut", you 
could write "mut.x=y" but not "con.x=y". I think.

On 11/01/2012 04:46, bearophile wrote:
 I ask here first before submitting about this to Bugzilla.

 If lazy arguments can't be lvalues:


 void foo(lazy int x) {
      x = x;
 }
 void main() {}

 ==>
 test.d(2): Error: lazy variables cannot be lvalues


 What's the point of accepting const lazy arguments?

 void foo(const lazy int x) {}
 void main() {}

 Bye,
 bearophile
Jan 11 2012
parent bearophile <bearophileHUGS lycos.com> writes:
Ben Davis:

 If you had a "const lazy SomeClass con" and a "lazy SomeClass mut", you 
 could write "mut.x=y" but not "con.x=y". I think.
You are right, this code compiles: struct Foo { int i; } void foo(lazy Foo f) { f.i++; } void main() {} Thank you, bearophile
Jan 11 2012