This works very well (GDC 4.2.4): Object clone(Object object) { auto size = object.classinfo.init.length; object = cast(Object) ( (cast(void*)object) [0..size].dup.ptr ); // object.__monitor = null; return object; }