import std.stdio; class D : X{} class X{} template t1(T : void function(T)){enum t1 = "1.";} template t1(T : void function(X)){enum t1 = "2.";} int main(string[] argv){ t1!(void function(D)).writeln(); readln(); return 0; } this code prints 1. on dmd and gdc but on ldc it prints 2. Which one is correct?