https://issues.dlang.org/show_bug.cgi?id=12620
Vladimir Panteleev <dlang-bugzi...@thecybershadow.net> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |dlang-bugzilla@thecybershad | |ow.net Resolution|--- |INVALID --- Comment #4 from Vladimir Panteleev <dlang-bugzi...@thecybershadow.net> --- (In reply to Andrej Mitrovic from comment #3) > Ah, could be. I guess it makes sense to prefer matching the version which > retains the matching type (and retains the full range of the type this way) > rather than tries to implicitly convert it. Err, but you can't implicitly convert a double[] to a float[]. I mean, it works when you assign it: float[] arr = [1.0]; So does with int->byte: byte[] arr = [1]; but int->byte conversion fails with your example too: template Foo(alias sym) { pragma(msg, "Foo1"); } template Foo(alias byte[] sym) { pragma(msg, "Foo2"); } void main() { alias foo1 = Foo!([1]); // prints Foo1 } So, this issue is either invalid, or it's about an enhancement request to extend the same type of implicit conversion used for initialization / literal assignment to alias parameters. Seeing how this issue as initially formulated was based on a misunderstanding, and that it was filed 3 years ago, I'll be closing this, but feel free to reopen if you disagree. --