Boost logo

Boost :

From: John Maddock (John_Maddock_at_[hidden])
Date: 2000-06-08 06:49:20


>1. It might be better not to re-use the names of my guarantees (basic,
>strong, no-throw), especially unless there is a clear parallel, or we risk
>some confusion and dilution of power.<

Agreed, I need better names and tighter deffinitions as several people have
pointed out.

>2. A system of distinctions is powerful in proportion to its simplicity. I
considered drawing finer distinctions than basic/strong/no-throw, (and you
can do it) but what you end up with turns out not to be very useful. I know
this is a qualitative remark, but the distinctions between some of your
levels of safety don't seem quite stark enough to me. It looks like level 1
is specifically formulated to deal with COW (I am referring to your
use of the phrase "not a copy of"). Let me try to be clear about what I'm
saying: level 1 objects, for example, can be used by a single thread in a
multithread environment so long as no other thread uses an object that was
copied from this object. This is a subtle and hard-to-control condition.
Sometimes it is better not to draw out special conditions under which a
construct is safe, but to simply label it unsafe.

Yes you are correct that level 1 was for COW, the name "appartment" was
chosen deliberately as COM already uses that name for that model - its a
concept that many people will already be familiar with. On this point it
seems that maybe I should take a leaf out of COM's book and call level 3
"Free threaded". That leaves a good choice of name for level 2 - I favour
"normal" because its the behaviour you get for built in types, and the
behaviour that most people normally expect from regular C++ objects.

- John.

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