"KennyTM~" <kenn...@gmail.com> wrote in message news:ilrght$1h5i$1...@digitalmars.com... > On Mar 16, 11 23:01, Ary Manzana wrote: >> On 3/15/11 3:29 PM, Andrei Alexandrescu wrote: >>> 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 >> >> Syntax matters. A lot. Which one is more readable/understandable? >> >> struct Point2 { >> int x; >> int y; >> } >> >> 1. >> >> struct Point3 { >> Point2 point2; >> alias this point2; > > Should be "alias point2 this;" > > (strengthening the argument that this syntax is not good?) >
I've long been convinced that "alias old new;" should really be "alias new = old;" The current way confuses me, and I *still* have to consciously stop and think about it every time I write an alias statement (including just now).