What does C++ do better than D? - StackOverflow.com

Walter Bright newshound2 at digitalmars.com
Mon Aug 1 16:51:34 PDT 2011


On 8/1/2011 4:36 PM, Jonathan M Davis wrote:
> You lose logical const, which he has wanted to use in stuff that he's been
> doing (games I think). He wants to lazy load values in his objects. You can't
> do that with D's const. It pretty much means that that you have to either
> eager load it or give up on const. It's totally doable, but it forces you to
> change your design in a manner which you might not like.

I've talked to many people who use logical const extensively in C++, and really 
want it. If you dig down into what's happening, you'll find that logical const 
isn't actually supported by C++. It's a convention. There's simply nothing in 
the language that enforces that convention.

The reason "logical const" does not work with const in D is because D actually 
enforces const semantics, and relies on that enforcement.

Since logical const is a convention in C++ anyway, you can have logical const in 
D, too. Just put in a comment:

    struct S /* This struct is logical const */
    { ... }

and then follow the convention just as you would with C++.

Const in C++ is not powerful - it's simply a fraud - and the two get confused.


More information about the Digitalmars-d mailing list