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



--- Comment #11 from Steven Schveighoffer <schvei...@yahoo.com> 2011-11-10 
13:22:28 PST ---
(In reply to comment #10)
> (In reply to comment #9)
> > inout's primary focus is transferring the type modifier from the arguments 
> > to
> > the return type.  Merging it with a possible external immutable type is
> > secondary.
> > 
> > I think inout(const(T)) should resolve as we've discussed.  The enhancement 
> > is
> > that immutable(T) and inout(T) should be implicitly castable to
> > inout(const(T)).  
> 
> See specification of inout:
> http://d-programming-language.org/function.html
> 
> "The inout forms a wildcard that stands in for any of mutable, const or
> immutable. When the function is called, the inout of the return type is 
> changed
> to whatever the mutable, const, or immutable status of the argument type to 
> the
> parameter inout was."
> 
> If inout(const(T)) is parsed as const(T) then the inout does not form a
> wildcard that can stand for immutable. Contradiction with the language
> specification. That is a bug.

You may be misunderstanding me.  I agree this is a bug.  I'll try to be
clearer:

1. inout(const(T)) should resolve to const(T) or immutable(T) upon exit from
inout scope.  That it resolves to const(T) right now is a bug.

2. immutable(T) and inout(T) can legally implicitly cast to inout(const(T)). 
This is an enhancement.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------

Reply via email to