Reddit: why aren't people using D?

Rainer Deyke rainerd at eldwood.com
Fri Jul 24 01:05:31 PDT 2009


Walter Bright wrote:
> Rainer Deyke wrote:
>> I like it in Python, where all variables are references.  Java is
>> similar to Python in this regard, although the existence of primitive
>> value types complicates the situation somewhat.
>>
>> I don't like it in D, where reference types and value types coexist.  I
>> especially don't like it in templates in D, where it may not be clear if
>> you're dealing with a reference type or a value type until instantiation.
> 
> 
> Is C++ really better in that regard? Given a non-trivial struct or class
> declaration, I'd be hard pressed to determine if it was meant to be a
> value or reference type.

Yes, it is.  Mainly because C++ doesn't have reference types in same way
that D does.

In C++, values of *all* types (including primitive integral types and
even pointer types) can be placed on the heap, and such values are
*always* managed by (smart) pointers, with pointer syntax.  In this
sense, all types in C++ can be used as reference types.

There are C++ classes that are meant to always be placed on the heap and
managed by a pointer.  They are the closest C++ has to D-style classes.
 They are exceedingly rare.  They're also easy to identify: their
constructors are protected, so the only way to instantiate them is by
calling a factory function that returns a (smart) pointer.


-- 
Rainer Deyke - rainerd at eldwood.com



More information about the Digitalmars-d mailing list