Thread overview
inout and methods which return "this"
Sep 12, 2011
Vladimir Panteleev
Sep 12, 2011
Timon Gehr
Sep 12, 2011
Jonathan M Davis
September 12, 2011
What's the simplest const-correct way to write a method which returns "this"?

I tried the following to no avail:

class Test
{
	inout(Test) f() inout
	{
		return this;
	}
}

Result:

test.d(3): Error: inout on return means inout must be on a parameter as well for inout inout(Test)()

It seems to me that the compiler could check the method's constness along with that of its parameters, but doesn't (omission / unimplemented feature?)

-- 
Best regards,
 Vladimir                            mailto:vladimir@thecybershadow.net
September 12, 2011
On 09/12/2011 03:48 AM, Vladimir Panteleev wrote:
> What's the simplest const-correct way to write a method which returns
> "this"?
>
> I tried the following to no avail:
>
> class Test
> {
> inout(Test) f() inout
> {
> return this;
> }
> }
>
> Result:
>
> test.d(3): Error: inout on return means inout must be on a parameter as
> well for inout inout(Test)()
>
> It seems to me that the compiler could check the method's constness
> along with that of its parameters, but doesn't (omission / unimplemented
> feature?)
>

Yes, afaik inout is not functional at the moment.
September 12, 2011
On Monday, September 12, 2011 05:38:36 Timon Gehr wrote:
> Yes, afaik inout is not functional at the moment.

http://d.puremagic.com/issues/show_bug.cgi?id=3748

- Jonathan M Davis
September 12, 2011
On Sun, 11 Sep 2011 21:48:36 -0400, Vladimir Panteleev <vladimir@thecybershadow.net> wrote:

> What's the simplest const-correct way to write a method which returns "this"?
>
> I tried the following to no avail:
>
> class Test
> {
> 	inout(Test) f() inout
> 	{
> 		return this;
> 	}
> }
>
> Result:
>
> test.d(3): Error: inout on return means inout must be on a parameter as well for inout inout(Test)()
>
> It seems to me that the compiler could check the method's constness along with that of its parameters, but doesn't (omission / unimplemented feature?)

It's not correctly implemented.  When it is, the above will be correct.

-Steve