Why can't structs be derived from?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Mar 15 11:29:55 PDT 2011


On 3/15/11 12:55 PM, Jens wrote:
> Steven Schveighoffer wrote:
>> That's all there is.  Structs do not have inheritance, only alias
>> this.
>
> Why don't they though? Inheritance does not have to mean polymorphic. It
> can mean composition, like in C++. I don't understand the reason for such
> ugly syntax.

Using inheritance for composition is frowned upon in C++ for good 
reasons. If you want composition, the best is to use composition.

The reason for the allegedly ugly syntax is that it's considerably more 
general. It is often the case that a struct defines an entity that is 
implicitly convertible to another entity - could be an rvalue vs. 
lvalue, a class vs. another struct vs. a primitive type, could need a 
run-time operation etc. Inheritance would offer at best few of these 
amenities, whereas 'alias this' offers all with a simple syntax.


Andrei


More information about the Digitalmars-d mailing list