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

Reply via email to