A const use-case I would NOT like to see replicated

Walter Bright newshound1 at digitalmars.com
Thu Jun 21 19:41:28 PDT 2007


Tim Keating wrote:
> I have been following the discussion on const/invariant/final, and while 
> I understand the need to add this feature to the language, my initial 
> reaction was repugnance. In order to add value and not just fan a 
> flame-war, I spent some time ruminating on why this is so. As a result, 
> I recalled a use case for const in C++ that caused me considerable pain, 
> and so I throw it out here for discussion.

I think you've run into the well known problem that you cannot do 
const-correctness halfway. Once you start using const, it has to be used 
throughout your program or library.

A corollary is it is not very practical to have a const-correct program 
that calls a library that is not const-correct. The general conclusion is:

1) If you're writing a general purpose library, you have to make it 
const-correct, otherwise your users will curse you and your little dog, too.

2) If you're writing a program, you can successfully ignore const. But 
if you do start using const, you'll find you have to commit to using it 
throughout.

As part of 2.0, I therefore had to go through Phobos to make it 
const-correct. I found a couple of cases where I didn't remember if an 
input value was modified or not, and had to spend a non-trivial amount 
of time figuring it out. This gave me a bit of a better appreciation for 
the documentation benefits of const-correctness.

Another point of note - I didn't find a single bug in Phobos from doing 
the conversion.



More information about the Digitalmars-d mailing list