[swift-users] Why can't structs inherit from other structs?

David Sweeris davesweeris at mac.com
Tue Aug 2 17:10:13 CDT 2016

> On Aug 2, 2016, at 4:03 AM, Tino Heth via swift-users <swift-users at swift.org> wrote:
> There is no fundamental reason to disallow struct inheritance, and I started a pitch where afair one member of core agreed it would be useful — I hope there is time to add it in the next year.
> There is, however, a fundamental problem with struct polymorphism:
> As soon as you add members, you loose compatibility (a Point3D: Point2D can't be stored or passed where its parent is expected), and when you cross module borders, there might be issues as well.
> Struct and class have to behave different in inheritance, and to disallow struct subtyping completely is just the easiest solution.
> Imho it's definitely not the best solution, as it forces you to use classes whenever you want to use inheritance (I don't think that composition is superior in general).
> It could be even possible to create structs that inherit from classes and vice versa.

I thought the problem with struct polymorphism (specifically the stack size issue) *was* the fundamental reason we can’t have “substructs”.

- Dave Sweeris

More information about the swift-users mailing list