You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
If you @disable a templated function that is not valid and then try to call __traits(isDisabled) on it with the template instantiated with something other than a type, then you will get a message that the template instance does not match the declaration. However, it does not tell you why. For instance, in the code below, T should also be part of the template, but you can only find that out if you actually call foo.
@disable T[] foo(U)(T[] x, T rhs)
{
return x ~ rhs;
}
unittest {
static assert(__traits(isDisabled, foo!"~"));
}
I would reiterate that this seems to be related to using something other than a type in the instantiation. If I try the code below, then it tells me that T is an undefined identifier.
unittest {
static assert(__traits(isDisabled, foo!(int)));
}
The text was updated successfully, but these errors were encountered:
john.michael.hall commented on 2019-11-13T18:10:52Z
It seems that this is related to not having a module defined...
When I add something like
module A;
to the top and then
static assert(__traits(isDisabled, A.foo));
compiles without error when U is there and if U is removed then it gives the error that T is not defined.
John Hall reported this on 2019-11-13T17:24:41Z
Transferred from https://issues.dlang.org/show_bug.cgi?id=20389
Description
The text was updated successfully, but these errors were encountered: