You can use a cast as a workaround: A[] objs = [cast(A)new B, new C ]; This bug has been around for a while, the first time I've seen it mentioned was in the second code snippet in this blog post: http://klickverbot.at/blog/2010/11/announcing-d-support-in-swig/