Hi, I don't know if this is really a bug or some gotcha of the language that I don't get. I'm sorry if it happens to be the later.
When I run this simple program class DispatchBase { auto opDispatch( string m, Args... )( Args args ) { writefln( "Tried to call %s", m ); return this; } } class DispatchDerived : DispatchBase { void printValue( T )( T value ) { writefln( "Value is %s", value ); } } void main() { DispatchBase base = new DispatchDerived(); base.items.printValue( true ); } I receive this output Tried to call items Tried to call printValue But what I was expecting is Tried to call items Value is true After all, opDispatch returns 'this'. The interesting thing is that when I move opDispatch up to DispatchDerived, everything works fine. It's like 'this' inside opDispatch didn't recognize its real type when in a base class. Hope you can help me. Daniel