https://issues.dlang.org/show_bug.cgi?id=24656
--- Comment #6 from basile-z <[email protected]> --- (In reply to dave287091 from comment #5) > (In reply to basile-z from comment #4) > > Also "to which point enum members are strongly-typed ?" is the underlying > > question. You expect some kind of VRP (or maybe constant folding) but that > > is not the case. > > I expect that specifying a base type means that enum is converted to that > type before any other implicit conversion. That goes a bit against how subtyping works: ``` class A {} class B : A {} void test(A a){ assert(0, "no the top-most type is tried first"); } void test(B b){} void main(){(new B).test();} ``` That being said, I'll stop to argument there. I'm not a big fan of the overloading principle. The issue you've opened is exactly what it leads to, i.e confusion. Side note: sure in D it's a bit more complex, as overloading participate to pick the right template, based on how constraints are evaluated ;) --
