Re: problem overloading functions with complex enum type

2017-07-10 Thread Ali Çehreli via Digitalmars-d-learn

On 07/08/2017 08:23 AM, Eric wrote:

> enum AS : string[2] { a = ["1","2"], b = ["3","4"] };
> enum BS : string[2] { a = ["5","6"], b = ["7","8"] };
>

> void funcs(AS a) { writeln("AS"); }
> void funcs(BS b) { writeln("BS"); }

> funcs(AS.a); // compiler error: matches both funcs(AS) and funcs(BS)

This looks like a bug to me.

Ali



Re: problem overloading functions with complex enum type

2017-07-10 Thread Lamex via Digitalmars-d-learn

On Saturday, 8 July 2017 at 15:23:10 UTC, Eric wrote:

import std.stdio;


check check one two


problem overloading functions with complex enum type

2017-07-08 Thread Eric via Digitalmars-d-learn

import std.stdio;

enum A : int { a, b };
enum B : int { a, b };
enum AS : string[2] { a = ["1","2"], b = ["3","4"] };
enum BS : string[2] { a = ["5","6"], b = ["7","8"] };

void func(A a)   { writeln("A");  }
void func(B b)   { writeln("B");  }
void funcs(AS a) { writeln("AS"); }
void funcs(BS b) { writeln("BS"); }

void test()
{
func(A.a); // no compiler error
funcs(AS.a); // compiler error: matches both funcs(AS) and 
funcs(BS)

}

void main(string[] args) { }

In the above code, the function with the simple enum type 
argument can
be overloaded, but the function with the complex enum type 
argument cannot be overloaded.

Is this a bug?

Thx.
Eric