Overloading doesn't work like described in "The D programming	language"
    Michael Kremser 
    mkspamx-usenet at yahoo.de
       
    Wed Dec  7 13:35:04 PST 2011
    
    
  
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?
Best regards
Michael
    
    
More information about the Digitalmars-d
mailing list