Hello, Firstly, I'm not an actual D programmer. I'm doing a college research about D language.
My point here is that I faced the following situation. With the code above void main() { fun(1f); fun(1); fun(1L); fun!(long)(1L); } void fun(T)(T i) { writeln(typeid(T)); } void fun(int i) { writeln("special => int"); } I get the output float special => int special => int long that is, even if I call fun(1L), with long literal, the VRP decide to use specialized fun(int). Due this, it's needed to specify that I need to use the generic function (losing readability). Said this, I wanted to know if this is a bug or an expected behavior.