$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: bill_kempf (williamkempf_at_[hidden])
Date: 2002-01-30 12:20:59
--- In boost_at_y..., "davlet_panech" <davlet_panech_at_y...> wrote:
> Hi,
> 
> It seems that the current implementation of some Boost.Threads 
> classes violates it's concept requirements, for example, here's how 
> condition::wait() looks like:
> 
>     template <typename L>
>     void wait(L& lock)
>     {
>         if (!lock)
>             throw lock_error();
> 
>         do_wait(lock.m_mutex);
>     }
> 
> 
> Type L is supposed to implement ScopedLock concept, which, unless I 
> am mistaken, doesn't mention anything named `m_mutex'. Am I missing 
> something here?
Not exactly.  The m_mutex parameter is a private parameter, and thus 
not part of the concept requirements.  It's an implementation detail 
requirement.  If an implementation for a given platform can be coded 
with out this requirement there's nothing wrong with that.
However, I can see problems with someone trying to extend the library 
with their own Mutex and ScopedLock variants that they want to work 
with boost::condition, and this sort of implementation detail 
prevents this.  So, there may be a small flaw in the design.
Anyone have any ideas about whether we should do something about 
this, and if so, what?
Bill Kempf