I've just found a new D-specific design pattern for simulating non-virtual multiple inheritance by abusing inner classes and alias this. Here's an example:
class Foo { uint num = 2; } class Bar { uint num = 3; } class Outer : Foo { class Inner : Bar {} Inner inner; this() { inner = new Inner; } alias inner this; } Basically, this satisfies all of the requirements for simulated multiple inheritance: 1. An Outer can be implicitly converted to either a Foo or a Bar. 2. It obtains both interface and implementation from both Foo and Bar. 3. The methods of Outer that override stuff from Foo have access to Bar-related stuff and vice-versa. Should this be listed somewhere as D's answer to lack of multiple inheritance? I find it very cool that the language is expressive enough to reasonably simulate MI.