Boost logo

Boost :

From: Aleksey Gurtovoy (agurtovoy_at_[hidden])
Date: 2002-06-27 21:36:57

Beman Dawes wrote:
> That, coupled with the tendency for each major library to have
> "exception.hpp", etc., increases the chance of name clashes.
> Thus give serious consideration to "boost/numerics/ublas/filename.hpp"
> and namespace boost::numeric::ublas.
> Then, to ease use:
> namespace ub = boost::numeric::ublas;
> or whatever. It helps to always use the same alias.

There is even more to it: if your global scope namespace alias happened to
match the name of any other entity in global scope of the program, then
you're entered the realms of undefined behavior, e.g. this

#include "boost/numerics/ublas/filename.hpp"

namespace ub = boost::numeric::ublas;


namespace ub = some_other_long_namespace_name;

// or struct ub { /* ... */ };
// or void ub();
// etc.

invokes an undefined behavior if both translation units are part of the same

FWIW, MPL provides a special header, "boost/mpl/alias.hpp", that user can
include to get an equivalent of

    namespace {
    namespace mpl = boost::mpl;

definition, e.g.

    #include "boost/mpl/list.hpp" // for boost::mpl::list
    #include "boost/mpl/alias.hpp" // namespace alias

    // now we can use 'mpl::' instead of longish 'boost::mpl::'
    typedef mpl::list<char,short,int> types;


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