On Wed, 07 Dec 2011 16:35:04 -0500, Michael Kremser
<mkspamx-use...@yahoo.de> wrote:
Hi!
On pages 145 and 146 (ยง 5.5.1) of "The D programming language" there is
an example with overloading a function with uint, long, and a
parameterized type. I tried to reproduce that using a similar example:
<code>
module main;
import std.stdio;
void overloadme(uint number)
{
writeln("This is overloadme with uint.");
}
void overloadme(long number)
{
writeln("This is overloadme with long.");
}
void overloadme(T)(T number)
{
writeln("Generic overloadme called.");
}
int main(string[] argv)
{
overloadme(25);
overloadme("Bla");
writeln("\nFinished");
readln();
return 0;
}
</code>
However, if I try to compile that code, the compiler yields an error in
line 15:
Error: template main.overloadme(T) conflicts with function
main.overloadme at main.d(5)
In the book it says that "non-generic functions are generally preferred
to generic functions, even when the non-generic function need an
implicit conversion". But in my case that doesn't work.
Can anyone explain me what's going on here? Is the example in the book
wrong or did I misinterpret something?
The compiler has not implemented overloads with templates yet.
Looks like there isn't a bug on it yet...
-Steve