Boost logo

Boost :

Subject: Re: [boost] Tests are a mess
From: David Abrahams (dave_at_[hidden])
Date: 2008-09-11 14:00:31

on Thu Sep 11 2008, "Robert Ramey" <> wrote:

> This specific concrete problems is that by replacing the functionality
> of a simple, well defined, understandable component with a very
> complex and elaborate one designed to address some other purpose
> now requires that one undertake a lot of new effort to verify what the
> new thing does, if it conflicts with the original reasons for selecting
> the component in the first place. All this takes a lot of time which
> I don't have. (We'll leave aside that apparently it depends on
> builds of other libraries for testing - which creates even more work).
> I raise this concern when the problems first came up and these
> concerns where dismissed. The author fail to see my concerns
> and legitimate and so no problem with behavior.

Okay, Robert. Now your concerns have been taken seriously, and, I
think, addressed. Is that correct, and if so, can we move on? If not,
what is left to deal with?

> This question has been raised why I put it into
> boost::serialization::throw_exception instead just using
> boost::throw_exception for the for user override. This is the
> decision which I believe is causing your grief. First of all, it's
> not clear to me anymore what boost::throw_exception should do - its
> not obvious that its equivalent to the old boost::throw_exception.

You won't take the word of Emil and Peter that it is?

> But the truth is I didn't think about it. Last year I got a huge
> amount of grief for some things I had in the boot namespace and agreed
> to move them in to the serialzation directory and namespace. An
> example was BOOST_STATIC_WARNING and a couple of others. It just so
> happened that I was moving this stuff out of the boost namespace to
> the serialization namespace and it was convenient to do the same with
> throw_exception at the same time.

But throw_exception is not a similar case in any way. The things you
were asked to move were *definitions* that were placed into namespace
boost rather than into the serialization library. You didn't have a
definition of throw_exception to move.

Your change is analogous to making the switch from using
boost::result_of to using your own private result_of template in
Boost.Serialization. The result would be that existing code would stop
working because your users had created necessary specializations of
boost::result_of that would now not be used, just as now anyone's
definition of boost::throw_exception will now not be used by the
serialization library.

Dave Abrahams
BoostPro Computing

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