Inheritance of purity

bearophile bearophileHUGS at
Thu Feb 16 19:59:11 PST 2012

Jonathan M Davis:

> I hate the fact that C++ does this with virtual. It makes 
> it so that you have to constantly look at the base classes to figure out what's 
> virtual and what isn't. It harms maintenance and code understandability. And 
> now you want to do that with @safe, pure, nothrow, and const? Yuck.

This is a problem.

On the other hand I presume Walter is now converting Phobos all at once to fix const correctness, so he's writing tons of attributes. So he desires to quicken this boring work.

On the other hand fixing const correctness in Phobos is not a common operation, I think it needs to be done only once. Once one or two future DMD versions are out, programmers will not need to introduce a large amount of those annotations at once. So "fixing" forever D2 for an operation done only once seems risky, especially if future IDEs will be able to insert those annotations cheaply.

So a possible solution is to wait 2.059 or 2.060 before introducing this "Inheritance of purity" idea. I think at that time we'll be more able to judge how much useful this feature is once Phobos is already fully const corrected and no need to fix a lot of code at once exists.

Another idea is to activate this "Inheritance of purity" only if you compile with "-d" (allow deprecated features) for few months and then remove it, to help porting of today D2 code to const correctness in a more gradual way.


More information about the Digitalmars-d mailing list