Boost logo

Boost :

From: David B. Held (dheld_at_[hidden])
Date: 2004-01-03 03:18:22

"Thorsten Ottosen" <nesotto_at_[hidden]> wrote in message
> [...]
> Having propagation of constness makes a lot of sense and
> would certainly make the smart pointers a lot smarter.

At first, I thought so too. But then I thought about what raw pointers
do, and I decided that it was better to mimic the built-ins. If you
always propagate constness, then you can't have a const ptr to a
non-const object. Maybe that doesn't bother you, but perhaps there
is a scenario in which you want to be able to modify the pointee in
a function, but you don't want to accidentally reset() or release() the
pointer in that function. Propagation of constness eliminates this
possibility. The solution for deep-const is smart_ptr<T const>. It's
not perfect, but I think it's the right thing to do.

> [...]
> smart_ptr< const T, deep_copy > ?

Yes, exactly. That puts constness where it belongs.


Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (
Version: 6.0.556 / Virus Database: 348 - Release Date: 12/26/2003

Boost list run by bdawes at, gregod at, cpdaniel at, john at