// https://issues.dlang.org/show_bug.cgi?id=9029 enum NameOf(alias S) = S.stringof; static assert(NameOf!int == "int"); enum BothMatch(alias S) = "alias"; enum BothMatch(T) = "type"; void foo9029() { } struct Struct { } static assert(BothMatch!int == "type"); static assert(BothMatch!(void function()) == "type"); static assert(BothMatch!BothMatch == "alias"); static assert(BothMatch!Struct == "type"); static assert(BothMatch!foo9029 == "alias"); static assert(BothMatch!5 == "alias"); // https://issues.dlang.org/show_bug.cgi?id=19884 mixin template genCtEvaluate() { void evaluate(alias op)() { } } struct S { mixin genCtEvaluate!() mixinEval; alias evaluate = mixinEval.evaluate; void evaluate() { } } alias List(Ops...) = Ops; void main() { S g; foreach (op; List!(0)) { g.evaluate!op(); } }