Optional type - how to correctly reset a wrapped immutable T
    aliak 
    something at something.com
       
    Tue Mar 27 13:02:50 UTC 2018
    
    
  
On Tuesday, 27 March 2018 at 11:57:28 UTC, jmh530 wrote:
> On Tuesday, 27 March 2018 at 06:26:57 UTC, aliak wrote:
>> [snip]
>>
>> By the by,  how come inout has to be stack based and 
>> const/immutable/mutable doesn't? Isn't inout just one of those 
>> depending on context?
>
> Example?
Hmm, now that I'm explicitly trying to produce it, I feel I maybe 
using inout incorrectly?
struct Optional(T) {
     T[] bag;
     this(T t) {
         bag = [t];
     }
}
struct S {
     Optional!(inout(int)) f() inout
     {
         return Optional!(inout(int))(3);
     }
}
void main()
{
     auto a = S().f;
}
Above gives: Error: variable 
`onlineapp.Optional!(inout(int)).Optional.bag` only parameters or 
stack based variables can be inout
Change inout to const e.g. and it's all good.
    
    
More information about the Digitalmars-d-learn
mailing list