https://issues.dlang.org/show_bug.cgi?id=15623
--- Comment #2 from Adrian Matoga <[email protected]> --- It's not only module scope - it's broken also inside templates, e.g.: --- template canBeInstantiated(alias StructTemplate, Parameters...) { static if (is(StructTemplate!Parameters)) enum canBeInstantiated = true; else enum canBeInstantiated = false; } static assert( canBeInstantiated!(CallsFoo, HasFoo)); //static assert(!canBeInstantiated!(CallsFoo, NoFoo)); //fails --- or: --- template canBeInstantiated(alias StructTemplate, Parameters...) { enum canBeInstantiated = is(StructTemplate!Parameters); } static assert( canBeInstantiated!(CallsFoo, HasFoo)); //static assert(!canBeInstantiated!(CallsFoo, NoFoo)); //fails --- However, the function trick indeed works: --- bool canBeInstantiated(alias StructTemplate, Parameters...)() { return is(StructTemplate!Parameters); } static assert( canBeInstantiated!(CallsFoo, HasFoo)); static assert(!canBeInstantiated!(CallsFoo, NoFoo)); // hooray! --- --
