[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