Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2004-07-07 08:59:12

Michael Glassford <glassfordm_at_[hidden]> writes:

> The point being that TryLock is a refinement of Lock, and TimedLock is
> a refinement of TryLock? If so, I agree that's better than TryLock and
> TimedLock both refining Lock. There are still the constructor issues
> to deal with in such a lock taxonomy, however. The main one: how do
> you define destructors that are consistent within a lock concept and
> also consistent between concepts. E.g., on the one hand it seems that
> a one-parameter constructor should do the same thing in all lock
> types--so it would have to block; on the other hand, it seems that
> TryLock constructors should not block unless instructed to do
> otherwise.

One possible answer is that construction protocol simply isn't part
of the concept taxonomy.

Another possible answer might lie in considering syntax alternatives
for lock construction. For example, a named parameter interface:

  Lock l(block = m);

  TryLock l(block = m);
  TryLock l(proceed = m);

  TimedLock l(wait = m, t);

That particular expression of the idea is probably too cute, but I'm
just trying to expand the boundaries of thought.

Dave Abrahams
Boost Consulting

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