Boost
C++ Libraries
...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
This is an older version of Boost and was released in 2013. The current version is 1.90.0.
When Boost.TR1 is configured to make use of your standard library's native TR1 implementation, then it doesn't do very much: it just includes the appropriate header.
When Boost.TR1 is using the Boost implementation of a particular component,
then it includes the appropriate Boost header(s) and imports the necessary
declarations in namespace std::tr1 with
using declarations. Note that only those declarations that are part of the
standard are imported: the implementation is deliberately quite strict about
not including any Boost-specific extensions in namespace
std::tr1, in order to catch any portability errors
in user code. If you really need to use Boost-specific extensions then you
should include the Boost headers directly and use the declarations in namespace boost:: instead. Note that this style of implementation
is not completely standards-conforming, in particular it is not possible to
add user-defined template specializations of TR1 components into namespace std::tr1. There
are also one or two Boost libraries that are not yet fully standards conforming,
any such non-conformities are documented in the
TR1 by subject section. Hopefully, occurrences of non-standard behavior
should be extremely rare in practice however.
If you use the standard conforming header includes (in boost/tr1/tr1) then these header names can sometimes
conflict with existing standard library headers (for example shared_ptr is added to the existing standard
library header <memory> rather than it's own header). These headers
forward on to your existing standard library header in one of two ways: for
gcc it uses #include_next,
and for other compilers it uses the macro BOOST_TR1_STD_HEADER(header)
(defined in boost/tr1/detail/config.hpp)
which evaluates to #include <../include/header>.
This should work "straight out the box" for most compilers, but does
mean that these headers should never be placed
inside a directory called "include" that is already in your compiler's
search path.