kenji hara wrote: > 2012年4月19日20:48 Jens Mueller <[email protected]>: > > Timon Gehr wrote: > >> On 04/19/2012 11:28 AM, Jens Mueller wrote: > >> >Hi, > >> > > >> >using UFCS with alias this behaves strange. > >> >Consider > >> > > >> >struct Foo > >> >{ > >> > int _member; > >> > alias _member this; > >> >} > >> > > >> >int foo(Foo f) { return f._member; } > >> >int foo(int i) { return i; } > >> > > >> >unittest > >> >{ > >> > Foo f; > >> > f.foo(); // which function will be called? Isn't it ambiguous? > >> >} > >> > > >> >Due to the alias this the function foo(int i) will be called. Is this > >> >the indented behavior? Practically, I want UFCS to just perform a > >> >syntactic rewrite from f.foo() to foo(f). > >> >When using alias this you have to define the second function. Providing > >> >only the first one results in a compile error. If you remove the alias > >> >this things work as expected (first one needs to be defined). > >> > > >> >I stumbled upon this problem when trying to define additional functions > >> >for a Tuple. Tuple has "alias field this" for falling back on > >> >TypeTuple's opIndex. Unfortunately, > >> > > >> >alias Tuple!(int) Bar; > >> >int bar(typeof(Bar.field) b) { return 1; } > >> > > >> >unittest > >> >{ > >> > Bar b; > >> > b.bar(); > >> >} > >> > > >> >does not work. > >> > > >> >Jens > >> > >> This is a bug. You can report it to: > >> http://d.puremagic.com/issues/ > > > > It's submitted. > > http://d.puremagic.com/issues/show_bug.cgi?id=7943 > > Thanks for your reply. > > > > Jens > > Posted compiler fix: > https://github.com/D-Programming-Language/dmd/pull/890 > > Thanks for your reporting, Jens!
Fabulous. Thanks a lot. Jens
