Thread overview | |||||
---|---|---|---|---|---|
|
July 08, 2017 problem overloading functions with complex enum type | ||||
---|---|---|---|---|
| ||||
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 |
July 10, 2017 Re: problem overloading functions with complex enum type | ||||
---|---|---|---|---|
| ||||
Posted in reply to Eric | On Saturday, 8 July 2017 at 15:23:10 UTC, Eric wrote:
> import std.stdio;
check check one two
|
July 10, 2017 Re: problem overloading functions with complex enum type | ||||
---|---|---|---|---|
| ||||
Posted in reply to Eric | 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 |
Copyright © 1999-2021 by the D Language Foundation