$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Daryle Walker (darylew_at_[hidden])
Date: 2004-08-20 16:54:58
[Top-post since the new stuff gives a fuller context.]
I think I need to explain things.  (This is what I get for not reading Boost
e-mail for a few days.  I could have nipped this in the bud.  I didn't find
out about this problem myself until I tried a compile....)
1.  <boost/utility_fwd.hpp> was introduced with
<boost/utility/base_from_member.hpp>
1a. <boost/utility/base_from_member.hpp> #includes <boost/utility_fwd.hpp>,
and needs to since a template value default is in the forwarding header.
2.  The other forward-able items in <boost/utility.hpp> were added to
<boost/utility_fwd.hpp> upon first commit.
3.  The various items in <boost/utility.hpp> were split into several
headers.
4.  The maintainers of <boost/noncopyable.hpp>, then _and_ now, ignored the
fact that <boost/utility_fwd.hpp> referenced boost::noncopyable.  This was
the mistake.
5.  What should have happened was to add "#include <boost/utility_fwd.hpp>"
to <boost/noncopyable.hpp> at the time of the split.
6.  The reason for [5]?  Headers that have a corresponding forwarding header
should always #include that forwarding header.  Why?  So...
7.  If someone makes a significant change in the primary header, the
mismatch in the forwarding header will cause a compile-time error.  (If only
we caught the mistake at [4], then Dave's change would have been flagged,
and we could have avoided this incident.)
8.  Unfortunately, Dave and Aleksey didn't understand this and went the
other way.  Instead of adding "#include <boost/utility_fwd.hpp>" to
<boost/noncopyable.hpp> (Bronek Kozicki suggested this), they excised
boost::noncopyable from <boost/utility_fwd.hpp>.
So, can we make the change go the other way?
On 8/20/04 2:18 PM, "David Abrahams" <dave_at_[hidden]> wrote:
> Matthias Troyer <troyer_at_[hidden]> writes:
>> Your latest changes to noncopyable (putting it into namespace
>> noncopyable_) seem to break a lot of boost code, since class
>> noncopyable now no longer exists in namespace boost.
> 
> It should be better now.  The original problem, as Aleksey suggested,
> was utility_fwd.hpp, which as a matter of fact I was *not* using.  I
> just removed the noncopyable forward declaration and typedef from it
> and put it all in noncopyable.hpp.
> 
> Sorry for the churn, everybody.
-- Daryle Walker Mac, Internet, and Video Game Junkie darylew AT hotmail DOT com