inout problems

Ali Çehreli acehreli at yahoo.com
Wed Feb 22 14:57:47 PST 2012


On 02/22/2012 02:06 AM, sclytrack wrote:
> On 02/22/2012 06:21 AM, Andrej Mitrovic wrote:
>> Hmm nevermind. The param type had to be inout, but to do that the ctor
>> itself has to be inout. Somehow I managed to put the inout specifier
>> in the wrong place when testing, I did this:
>>
>> this(inout(void*) obj) { } inout
>>
>> which is not the same as this:
>>
>> this(inout(void*) obj) inout { }
>>
>> Damn specs. Anyway it's working ok now.
>
> I'm having trouble with inout. Do you know where those specs are? Are
> there any specs?
>

"Inout Functions" here:

   http://dlang.org/function.html

Quoting from that page: "If an inout appears in a function parameter 
list, it must also appear in the return type."

At first reading, that seems to disqualify constructors. Then there is 
this (the documentation for struct doesn't mention inout):

   http://dlang.org/class.html

It says "These attributes apply to the hidden this parameter."

Putting 2 and 2 together we get 5. :p As Timon Gehr says, inout on a 
constructor must affect the type of the newly constructed object. Kind 
of like as if the constructor "returns" an object.

Ali


More information about the Digitalmars-d-learn mailing list