https://issues.dlang.org/show_bug.cgi?id=19394
Issue ID: 19394 Summary: Inconsistent overload resolution with named and non-named enums Product: D Version: D2 Hardware: x86_64 OS: Linux Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: dhase...@gmail.com --- import std.stdio; void foo(bool b) { writefln("bool %s", b); } void foo(int b) { writefln("int %s", b); } enum : int { a = 0 } enum A : int { a = 0 } void main() { foo(a); foo(A.a); } --- Hoped-for result: int 0 int 0 Expected result after reading DIP1015 and its rejection: bool false bool false Actual result: int 0 bool false To give name to a thing, it seems, is to change its very nature. --