lvalue forwarding struct?
Bill Baxter
dnewsgroup at billbaxter.com
Tue Aug 21 10:51:59 PDT 2007
Chad J wrote:
> What I am looking for is a templated struct that simply wraps a
> variable, and ensures lvalueness is preserved for that variable.
> Ex:
>
> foo(bar) *= 9;
>
> In this case foo is to be a function that acts on bar, and then makes
> sure that bar has the *= 9; applied to it.
>
> It might look like this:
>
> int foo(inout int input)
> {
> input++;
> return lvalue(input);
> /* lvalue(...) is an opCall constructor for the lvalue templated
> forwarding struct. */
> }
It certainly isn't going to work if you return 'int'.
> Thus we could write
>
> int bar = 3;
> foo(bar) *= 9;
> printf( "%d", bar ); // prints 36
>
> One possible use case would be as a hack to get around certain
> shortcomings of properties for the time being.
>
> So does anyone have such a thing that they want to share?
> Otherwise this is something I might do.
I think you should take a look at the code posted by Reiner the other
day in digitalmars.D under the subject "Proxy objects and
controlling/monitoring access". The thread starts with the message
Xref: digitalmars.com digitalmars.D:57028
--bb
More information about the Digitalmars-d-learn
mailing list