What would you expect for this code?
struct Something(Types...) {}
enum isSomethingExact(T) = is(T == Something!Types, Types...);
enum isSomething(T) = is(T : Something!Types, Types...);
pragma(msg, isSomethingExact!noreturn);
pragma(msg, isSomething!noreturn);
This currently outputs false
, true
which breaks my code because more concretely isSumType!(typeof(someMethod()))
returns true. I can add a check for noreturn before that, but it seems a little weird that noreturn returns true for isSomething!T and functions like that in phobos.