Boost logo

Boost :

From: Philippe A. Bouchard (philippeb_at_[hidden])
Date: 2002-07-17 04:39:20

> > From: Philippe A. Bouchard [mailto:philippeb_at_[hidden]]
> > "David B. Held" <dheld_at_[hidden]> wrote in message
> > news:ah0cl8$tqu$


> This usage of 'mutable' was rejected because it has the side effect that
> copies of an object are not equivalent. This, in turn, can cause nasty
> side-effects if you use mutable_ptr with Standard containers and

Yeah I know, this is why 'mutable' was in the class name; to warn developer
from its side effects.

> While you can usually get away with using it in containers (although it's
> not technically portable), the real problem comes in using it with
> algorithms:

mutable_ptr<> should have restricted usages for primitive operations like
container copyings and destructions. Advantageous example:

class entry
    virtual ~entry() {}

class company : entry
    string name;
    list< mutable_ptr<entry> > affected_contracts;

class scientist : entry
    string name;

list< mutable_ptr<entry> > transactions;

You can see here that you could read a file into a list<> and transform it
into a vector<> when you know its final size. You'll also notice by
yourself that destructions will be done cleanly.


Philippe A. Bouchard

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