$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: Mitch Adler (mitch_at_[hidden])
Date: 1999-12-21 23:42:43
Greg Colvin (gcolvin_at_[hidden]) on or about 12/21/99 6:54 PM wrote:
>From: Mitch Adler <mitch_at_[hidden]>
>> That is, things can be added.
>
>So is Boost different from any other library in this respect?
Many support libraries define their extent and the names they use, and 
don't grow in their public inteface/namespace.
Many are owned by the organization containing all clients that use the 
namespace and can permit clients to require that library changes are 
verified against their code, counting on locality to fix problems. 
(Though I think that's a bad practice)
It is not true that all libraries are defined to expand, but boosts 
charter, as with many libraries, seems to be, by defnition, expanding in 
currenly unknowable ways. That is, classes we do not forsee now may be 
added a year from now, or two, or three.
This makes any documentation of the interface intractable with regard to 
name-collision avoidance.
>> Therefore there is no way to avoid potential collision with names in 
>> ::boost.
>
>Sure there is.  Don't use using-directives.
Yeah, exactly my point.
>> In practice, all names will not be used in ::boost, but unless we can 
>> define the set of names that will be used and document them, it is far 
>> better to tell people that 'using namespace ::boost' is the road to 
>> collisions, incompaibility and nightmares.
>
>Yep.  As is 'using namespace ::anything_else_you_can_name'.
Well, 'using namespace ::std' is clearly defined, and not likely to have 
much added, so you're pretty safe from collisions there  though I still 
don't like using namespace directives at all if I can help it.
Boost on the other hand, seems to be a much faster changing proposition, 
with more directions to expand in, causing much more potential for new 
names to be added.
All of this is seems to be vehement agreement that declaring that we 
don't know what will be added in ::boost, so we should discourage 'using 
namespace ::boost' as strongly as we can.
Mitch
------------------------------------------------------------------------
Mitch Adler                   "A triangle with four points is
Intelligent Paradigm           Euclid's ride to hell."
Mitch_at_[hidden]                 - Einstein, Picasso at the Lapin Agile
Mitch_at_[hidden]