2. We (or Calypso) define D class counterparts for polymorphic types thrown from C++, notably std::exception and subtypes. N.B. those are D classes, not D structs
Wouldn't it be easier with structs? They lack only one feature - inheritance, while classes lack many features necessary to value types: being a value type and deterministic destruction.