[Issue 13767] Cannot partially destructure type qualifiers with == form of IsExpression

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Sun Jul 2 03:14:49 PDT 2017


https://issues.dlang.org/show_bug.cgi?id=13767

Vladimir Panteleev <dlang-bugzilla at thecybershadow.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |spec
             Status|RESOLVED                    |REOPENED
         Resolution|INVALID                     |---
            Summary|Template type inference     |Cannot partially
                   |fails when destructuring    |destructure type qualifiers
                   |shared type                 |with == form of
                   |                            |IsExpression

--- Comment #3 from Vladimir Panteleev <dlang-bugzilla at thecybershadow.net> ---
(In reply to monkeyworks12 from comment #2)
> I'm assuming in your example you meant to use : instead of ==.

Oops, yes.

> That aside, why shouldn't this work? I'm trying to destructure some type
> which matches the pattern `shared U`. `shared const(int)` *should* match
> that pattern. What I'm trying to express is `∃ U: shared U == shared const
> int`; it seems incorrect to me that that I should have to use the subtyping
> form of is.

OK, I see what you mean now. It looks like partial destructuring of type
qualifiers was never implemented for == variants of IsExpression. It is the
same for inout:

static assert(!is(shared const int == shared U, U)); // should work
static assert( is(shared const int :  shared U, U));
static assert(!is(inout  const int == const  U, U)); // should work
static assert( is(inout  const int :  const  U, U));

--


More information about the Digitalmars-d-bugs mailing list