Why can't we derive struct's?
where at is.this
Mon Dec 24 23:54:19 UTC 2018
On Monday, 24 December 2018 at 23:06:26 UTC, 12345swordy wrote:
> On Monday, 24 December 2018 at 19:57:50 UTC, Walter Bright
>> On 12/24/2018 10:10 AM, H. S. Teoh wrote:
>>> If you can convince him, that would be great!
>> You'd need very compelling use cases.
>> It's like adding more and more horsepower to a car. At some
>> point, it doesn't make the car better.
>> Or like operator overloading. C++ has much more expansive
>> rules for operator overloading. They lead to clever programs,
>> and some people swear by them, but are they *better* programs?
>> For example,
>> * iostreams
>> * regex DSL
>> ? I don't buy it. I've never seen an elegant use of the more
>> expansive power (even though many insist those two examples
>> are elegant).
> A use case that pops in my head is to avoiding using
> inheritance as that is not always ideal tool, when it comes to
> structs/class as you have no control on how it does implicit
When talking implicit conversion (at least in the same sense as
C++) you create a new object when doing an implicit conversion.
How do you envision the implicit conversion would work?
> No Basic Event programming.
Why do you need implicit conversion for this ?
> No Design by Introspection.
> No Data Conversion in Regards to Passing Member Variables.
> You class/struct may end up with functions/variables that you
> don't want, which creates needless bloat.
You could just use explicit conversion for this, if that's the
case. Other than not having write 1 extra identifier there
wouldn't be that much more benefit.
> If you want to support multiple implicit conversion with the
> current features, then you need multiple alias this, which is
> not a good solution as
> A.) It is multiple inheritance. Which we both agree it is a
> terrible idea.
> B.) Multi alias this still hasn't been implemented already.
> *Throws table*
Idk, all this seems shakey. I avoid implicit conversion as much
as possible in C++, the times I do use it usually is because of
some other limitation in C++ that can be solved a different way
in D. Some concrete examples would help though.
More information about the Digitalmars-d