Boost logo

Boost :

Subject: Re: [boost] Boost Evolution
From: Stewart, Robert (Robert.Stewart_at_[hidden])
Date: 2010-10-11 06:42:57

vicente.botet wrote:
> From: "Stewart, Robert" <Robert.Stewart_at_[hidden]>
> > vicente.botet wrote:
> >> From: "Robert Ramey" <ramey_at_[hidden]>
> >>
> >> > I'm somewhat confused about "detail". If it's an
> >> > implemenation detail of a particular library it should be
> >> > in that library.
> >>
> >> +1, and I this that the name space should be prefixed by the
> >> name of the library as ratio::ratio_detail.
> >
> > Why not boost::ratio::detail? Why part namespace, part prefix?
> >
> > When I raised the issue with Boost.Ratio, the problem was
> > you used boost::detail and I was concerned with cluttering
> > that widely used namespace. If you had a boost::ratio
> > namespace, then boost::ratio::detail would work. However,
> > because your class template is boost::ratio<>, you can't have
> > a boost::ratio namespace. You could have one named
> > boost::ratios, so boost::ratios::detail would work.
> >
> > Is that a reasonable pattern to require for
> > future/refactored libraries?
> There could be a conflict with other detail namespaces if the
> user adds
> using namespace boost;
> using namespace boost::ratios;

Of course there could. This can go on ad infinitum, but we do
see value in namespaces. In that particular case, one can still
write boost::detail or boost::ratios::details or ratios::details
to disambiguate.

If there are names in common and one tries to use such a name,
then there will be an ambiguity which must be resolved. The
difference is that the names will be in different namespaces and
can be disambiguated, whereas two libraries that put the same
name into boost::detail simply cannot coexist.

> It seems more unlikely that other libraries use ratios_detail
> as namespace, isn't it?

That is just as unlikely as two libraries using

> I've seen that a lot of libraries uses detail namespace and
> others lib_detail. I think that I will move all my uses of
> detail to lib_detail.

If all new libraries use lib_detail rather than detail, the
problem just shifts, unless you mean <lib>_detail, where "<lib>"
is replaced by the library name. Still, as I've shown, that
simply mixes paradigms making it a little more surprising, I
should think. If we can establish that pattern as desirable,
then new libraries can adopt it and it will be expected, of

Rob Stewart robert.stewart_at_[hidden]
Software Engineer, Core Software using std::disclaimer;
Susquehanna International Group, LLP

IMPORTANT: The information contained in this email and/or its attachments is confidential. If you are not the intended recipient, please notify the sender immediately by reply and immediately delete this message and all its attachments. Any review, use, reproduction, disclosure or dissemination of this message or any attachment by an unintended recipient is strictly prohibited. Neither this message nor any attachment is intended as or should be construed as an offer, solicitation or recommendation to buy or sell any security or other financial instrument. Neither the sender, his or her employer nor any of their respective affiliates makes any warranties as to the completeness or accuracy of any of the information contained herein or that this message or any of its attachments is free of viruses.

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