From 73379d34b4f868a16c7308e2aed39e20bad28db4 Mon Sep 17 00:00:00 2001 From: John Maddock Date: Wed, 6 Jun 2007 11:49:57 +0000 Subject: [PATCH] Changed old docs to point at the new quickbook versions. Applies a few patches to the quickbook source and regenerated docs. Changed image location to boost-root/doc/images. [SVN r37915] --- config.htm | 1751 +---------------- doc/Jamfile.v2 | 27 +- doc/acknowledgements.qbk | 3 + doc/config.qbk | 6 +- doc/html/boost_config/acknowledgements.html | 25 +- .../boost_config/boost_macro_reference.html | 78 +- .../guidelines_for_boost_authors.html | 49 +- doc/html/boost_config/rationale.html | 34 +- doc/html/images/callouts/1.png | Bin 391 -> 0 bytes doc/html/images/callouts/10.png | Bin 485 -> 0 bytes doc/html/images/callouts/11.png | Bin 410 -> 0 bytes doc/html/images/callouts/12.png | Bin 488 -> 0 bytes doc/html/images/callouts/13.png | Bin 509 -> 0 bytes doc/html/images/callouts/14.png | Bin 499 -> 0 bytes doc/html/images/callouts/15.png | Bin 507 -> 0 bytes doc/html/images/callouts/2.png | Bin 446 -> 0 bytes doc/html/images/callouts/3.png | Bin 431 -> 0 bytes doc/html/images/callouts/4.png | Bin 441 -> 0 bytes doc/html/images/callouts/5.png | Bin 423 -> 0 bytes doc/html/images/callouts/6.png | Bin 431 -> 0 bytes doc/html/images/callouts/7.png | Bin 397 -> 0 bytes doc/html/images/callouts/8.png | Bin 434 -> 0 bytes doc/html/images/callouts/9.png | Bin 420 -> 0 bytes doc/html/images/caution.png | Bin 4286 -> 0 bytes doc/html/images/home.png | Bin 1105 -> 0 bytes doc/html/images/important.png | Bin 4666 -> 0 bytes doc/html/images/next.png | Bin 768 -> 0 bytes doc/html/images/note.png | Bin 4648 -> 0 bytes doc/html/images/prev.png | Bin 741 -> 0 bytes doc/html/images/tip.png | Bin 3902 -> 0 bytes doc/html/images/up.png | Bin 766 -> 0 bytes doc/html/images/warning.png | Bin 3927 -> 0 bytes doc/html/index.html | 103 +- index.html | 5 +- test/Jamfile.v2 | 1 + 35 files changed, 166 insertions(+), 1916 deletions(-) delete mode 100644 doc/html/images/callouts/1.png delete mode 100644 doc/html/images/callouts/10.png delete mode 100644 doc/html/images/callouts/11.png delete mode 100644 doc/html/images/callouts/12.png delete mode 100644 doc/html/images/callouts/13.png delete mode 100644 doc/html/images/callouts/14.png delete mode 100644 doc/html/images/callouts/15.png delete mode 100644 doc/html/images/callouts/2.png delete mode 100644 doc/html/images/callouts/3.png delete mode 100644 doc/html/images/callouts/4.png delete mode 100644 doc/html/images/callouts/5.png delete mode 100644 doc/html/images/callouts/6.png delete mode 100644 doc/html/images/callouts/7.png delete mode 100644 doc/html/images/callouts/8.png delete mode 100644 doc/html/images/callouts/9.png delete mode 100755 doc/html/images/caution.png delete mode 100755 doc/html/images/home.png delete mode 100755 doc/html/images/important.png delete mode 100755 doc/html/images/next.png delete mode 100755 doc/html/images/note.png delete mode 100755 doc/html/images/prev.png delete mode 100755 doc/html/images/tip.png delete mode 100755 doc/html/images/up.png delete mode 100755 doc/html/images/warning.png diff --git a/config.htm b/config.htm index 912bfc9b..df7430bd 100644 --- a/config.htm +++ b/config.htm @@ -1,1748 +1,15 @@ - - - - + - -

Boost

-

Boost Configuration Reference

-

Contents

-
Configuring Boost for Your Platform
-   Using the default boost configuration
-   The <boost/config.hpp> header
-   Using the configure script
-   User settable options
-   Advanced configuration usage
-   Testing the boost configuration
-Boost Macro Reference
-   Macros that describe defects
-   Macros that describe optional features
-   Macros that describe C++0x features
-   Boost Helper Macros
-   Boost Informational Macros
-   Macros for libraries with separate source code
-Guidelines for Boost Authors
-   Adding New Defect Macros
-   Adding New Feature Test Macros
-   Modifying the Boost Configuration Headers
-Rationale
-Acknowledgements
-

Configuring Boost for Your Platform

-

Using the default boost configuration

-

Boost comes already configured for most common compilers and platforms; you - should be able to use boost "as is". Since the compiler is configured - separately from the standard library, the default configuration should work - even if you replace the compiler's standard library with a third-party standard - library (like STLport). -

-

Using boost "as is" without trying to reconfigure is the recommended method for - using boost. You can, however, run the configure script if you want to, and - there are regression tests provided that allow you to test the current boost - configuration with your particular compiler setup.

-

Boost library users can request support for additional compilers or platforms - by visiting our Tracker - and submitting a support request. -

-

The <boost/config.hpp> - header

-

Boost library implementations access configuration macros via #include - <boost/config.hpp>.   -

-

While Boost library users are not required to include that file directly, or - use those configuration macros, such use is acceptable.  The configuration - macros are documented as to their purpose, usage, and limitations which makes - them usable by both Boost library and user code. + +

+ Automatic redirection failed, please go to doc/html/index.html.

-

Boost informational or helper - macros are designed for use by Boost users as well as for our own internal - use.  Note however, that the feature test and - defect test macros were designed for internal use by Boost libraries, - not user code, so they can change at any time (though no gratuitous changes are - made to them). Boost library problems resulting from changes to the - configuration macros are caught by the Boost regression tests, so the Boost - libraries are updated to account for those changes. By contrast, Boost library - user code can be adversely affected by changes to the macros without warning. - The best way to keep abreast of changes to the macros used in user code is to - monitor the discussions on the Boost developers list.

-

Using the configure script

-

Note: this configure script only sets up the Boost headers for - use with a particular compiler.  It has no effect on Boost.Build, or - how the libraries are built.

-

If you know that boost is incorrectly configured for your particular setup, and - you are on a UNIX like platform, then you may want to try and improve things by - running the boost configure script. From a shell command prompt you will need - to cd into <boost-root>/libs/config/ and type:

-
sh ./configure
-

you will see a list of the items being checked as the script works its way - through the regression tests. Note that the configure script only really - auto-detects your compiler if it's called g++, c++ or CC. If you are using some - other compiler you will need to set one or more of the following environment - variables:

- - - - - - - - - - - - - - - - - - - - - -

Variable

-

Description

-
CXXThe name of the compiler, for example "c++".
CXXFLAGSThe compiler flags to use, for example "-O2".
LDFLAGSThe linker flags to use, for example "-L/mypath".
LIBSAny libraries to link in, for example -lpthread.
-

For example to run the configure script with HP aCC, you might use something - like:

-
export CXX="aCC"
-export CXXFLAGS="-Aa -DAportable -D__HPACC_THREAD_SAFE_RB_TREE -DRWSTD_MULTI_THREAD -DRW_MULTI_THREAD -D_REENTRANT -D_THREAD_SAFE" 
-export LDFLAGS="-DAportable"
-export LIBS="-lpthread" 
-sh ./configure
-

However you run the configure script, when it finishes you will find a new - header - user.hpp - located in the <boost-root/libs/config/> directory. Note - that configure does not install this header into your boost include path by - default. This header contains all the options generated by the - configure script, plus a header-section that contains the user settable options - from the default version of user.hpp (located - under <boost-root>/boost/config/). There are two ways you can use this - header:

-

Option 1: copy the header into <boost-root>/boost/config/ so that it - replaces the default user.hpp provided - by boost. This option allows only one configure-generated setup; boost - developers should avoid this option, as it incurs the danger of accidentally - committing a configure-modified user.hpp to the cvs repository (something you - will not be thanked for!).

-

Option 2: give the header a more memorable name, and place it somewhere - convenient; then, define the macro BOOST_USER_CONFIG to point to it. For - example create a new sub-directory <boost-root>/boost/config/user/, and - copy the header there; for example as "multithread-gcc-config.hpp". Then, when - compiling add the command line option: - -DBOOST_USER_CONFIG="<boost/config/user/multithread-gcc-config.hpp>", and - boost will use the new configuration header. This option allows you to generate - more than one configuration header, and to keep them separate from the boost - source - so that updates to the source do not interfere with your - configuration.

-

User settable options

-

There are some configuration-options that represent user choices, rather than - compiler defects or platform specific options. These are listed in - <boost/config/user.hpp> and at the start of a configure-generated - user.hpp header. You can define these on the command line, or by editing - <boost/config/user.hpp>, they are listed in the following table: 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Macro

-

Description

-
BOOST_USER_CONFIGWhen defined, it should point to the name of the user - configuration file to include prior to any boost configuration files. When not - defined, defaults to <boost/config/user.hpp>.
BOOST_COMPILER_CONFIGWhen defined, it should point to the name of the - compiler configuration file to use. Defining this cuts out the compiler - selection logic, and eliminates the dependency on the header containing that - logic. For example if you are using gcc, then you could define - BOOST_COMPILER_CONFIG to "boost/config/compiler/gcc.hpp".
BOOST_STDLIB_CONFIGWhen defined, it should point to the name of the - standard library configuration file to use. Defining this cuts out the standard - library selection logic, and eliminates the dependency on the header containing - that logic. For example if you are using STLport, then you could define - BOOST_STDLIB_CONFIG to "boost/config/stdlib/stlport.hpp".
BOOST_PLATFORM_CONFIGWhen defined, it should point to the name of the - platform configuration file to use. Defining this cuts out the platform - selection logic, and eliminates the dependency on the header containing that - logic. For example if you are compiling on linux, then you could define - BOOST_PLATFORM_CONFIG to "boost/config/platform/linux.hpp".
BOOST_NO_COMPILER_CONFIGWhen defined, no compiler configuration file is - selected or included, define when the compiler is fully conformant with the - standard, or where the user header (see BOOST_USER_CONFIG), has had any options - necessary added to it, for example by an autoconf generated configure script.
BOOST_NO_STDLIB_CONFIGWhen defined, no standard library configuration file - is selected or included, define when the standard library is fully conformant - with the standard, or where the user header (see BOOST_USER_CONFIG), has had - any options necessary added to it, for example by an autoconf generated - configure script.
BOOST_NO_PLATFORM_CONFIGWhen defined, no platform configuration file is - selected or included, define when the platform is fully conformant with the - standard (and has no useful extra features), or where the user header (see - BOOST_USER_CONFIG), has had any options necessary added to it, for example by - an autoconf generated configure script.
BOOST_NO_CONFIGEquivalent to defining all of - BOOST_NO_COMPILER_CONFIG, BOOST_NO_STDLIB_CONFIG and BOOST_NO_PLATFORM_CONFIG.
BOOST_STRICT_CONFIGThe normal behavior for compiler versions that are newer than the last known - version, is to assume that they have all the same defects as the last known - version. By setting this define, then compiler versions that are newer than the - last known version are assumed to be fully conforming with the standard. This - is probably most useful for boost developers or testers, and for those who want - to use boost to test beta compiler versions.
BOOST_ASSERT_CONFIGWhen this flag is set, if the config finds anything unknown, then it will stop - with a #error rather than continue. Boost regression testers should set this - define, as should anyone who wants to quickly check whether boost is supported - on their platform.
BOOST_DISABLE_THREADSWhen defined, disables threading support, even if the - compiler in its current translation mode supports multiple threads.
BOOST_DISABLE_WIN32When defined, disables the use of Win32 specific API's, even when these are - available. Also has the effect of setting BOOST_DISABLE_THREADS unless - BOOST_HAS_PTHREADS is set. This option may be set automatically by the config - system when it detects that the compiler is in "strict mode".
BOOST_DISABLE_ABI_HEADERSStops boost headers from including any prefix/suffix headers that normally - control things like struct packing and alignment.
BOOST_ABI_PREFIXA prefix header to include in place of whatever boost.config would normally - select, any replacement should set up struct packing and alignment options as - required.
BOOST_ABI_SUFFIXA suffix header to include in place of whatever boost.config would normally - select, any replacement should undo the effects of the prefix header.
BOOST_ALL_DYN_LINK -

Forces all libraries that have separate source, to be linked as dll's rather - than static libraries on Microsoft Windows (this macro is used to turn on - __declspec(dllimport) modifiers, so that the compiler knows which symbols to - look for in a dll rather than in a static library).  -

-

Note that there may be some libraries that can only be statically linked - (Boost.Test for example) and others which may only be dynamically linked - (Boost.Threads for example), in these cases this macro has no effect.

-
BOOST_WHATEVER_DYN_LINK -

Forces library "whatever" to be linked as a dll rather than a static library on - Microsoft Windows: replace the WHATEVER part of the macro name with the name of - the library that you want to dynamically link to, for example use - BOOST_DATE_TIME_DYN_LINK or BOOST_REGEX_DYN_LINK etc (this macro is used - to turn on __declspec(dllimport) modifiers, so that the compiler knows which - symbols to look for in a dll rather than in a static library).  -

-

Note that there may be some libraries that can only be statically linked - (Boost.Test for example) and others which may only be dynamically linked - (Boost.Threads for example), in these cases this macro is unsupported.

-
BOOST_ALL_NO_LIB -

Tells the config system not to automatically select which libraries to link - against.  -

-

Normally if a compiler supports #pragma lib, then the correct library build - variant will be automatically selected and linked against, simply by the act of - including one of that library's headers.  This macro turns that feature - off.

-
BOOST_WHATEVER_NO_LIB -

Tells the config system not to automatically select which library to link - against for library "whatever", replace WHATEVER in the macro name with the - name of the library; for example BOOST_DATE_TIME_NO_LIB or - BOOST_REGEX_NO_LIB.  -

-

Normally if a compiler supports #pragma lib, then the correct library build - variant will be automatically selected and linked against, simply by the act of - including one of that library's headers.  This macro turns that feature - off.

-
BOOST_LIB_DIAGNOSTICCauses the auto-linking code to output diagnostic messages indicating the name - of the library that is selected for linking.
BOOST_LIB_TOOLSETOverrides the name of the toolset part of the name of library being linked to; - note if defined this must be defined to a quoted string literal, for example - "abc".
-

Advanced configuration usage

-

By setting various macros on the compiler command line or by editing <boost/config/user.hpp>, - the boost configuration setup can be optimised in a variety of ways. -

-

Boost's configuration is structured so that the user-configuration is included - first (defaulting to <boost/config/user.hpp> - if BOOST_USER_CONFIG is not defined). This sets up any user-defined policies, - and gives the user-configuration a chance to influence what happens next. -

-

Next the compiler, standard library, and platform configuration files are - included. These are included via macros (BOOST_COMPILER_CONFIG etc, - see user settable macros), and if the corresponding macro is undefined - then a separate header that detects which compiler/standard library/platform is - in use is included in order to set these. The config can be told to ignore - these headers altogether if the corresponding BOOST_NO_XXX macro is set (for - example BOOST_NO_COMPILER_CONFIG to disable including any compiler - configuration file - see user settable macros). -

-

Finally the boost configuration header, includes <boost/config/suffix.hpp>; - this header contains any boiler plate configuration code - for example where - one boost macro being set implies that another must be set also.

-

The following usage examples represent just a few of the possibilities:

-

Example 1, creating our own frozen configuration.

-

Lets suppose that we're building boost with Visual C++ 6, and STLport 4.0. Lets - suppose also that we don't intend to update our compiler or standard library - any time soon. In order to avoid breaking dependencies when we update boost, we - may want to "freeze" our configuration headers, so that we only have to rebuild - our project if the boost code itself has changed, and not because the boost - config has been updated for more recent versions of Visual C++ or STLport. - We'll start by realising that the configuration files in use are: <boost/config/compiler/visualc.hpp> - for the compiler, <boost/config/stdlib/stlport.hpp> - for the standard library, and <boost/config/platform/win32.hpp> - for the platform. Next we'll create our own private configuration directory: - boost/config/mysetup/, and copy the configuration files into there. Finally, - open up <boost/config/user.hpp> - and edit the following defines:

-
#define BOOST_COMPILER_CONFIG "boost/config/mysetup/visualc.hpp"
-#define BOOST_STDLIB_CONFIG "boost/config/mysetup/stlport.hpp"
-#define BOOST_USER_CONFIG "boost/config/mysetup/win32.hpp"
-

Now when you use boost, its configuration header will go straight to our - "frozen" versions, and ignore the default versions, you will now be insulated - from any configuration changes when you update boost. This technique is also - useful if you want to modify some of the boost configuration files; for example - if you are working with a beta compiler release not yet supported by boost.

-

Example 2: skipping files that you don't need.

-

Lets suppose that you're using boost with a compiler that is fully conformant - with the standard; you're not interested in the fact that older versions of - your compiler may have had bugs, because you know that your current version - does not need any configuration macros setting. In a case like this, you can - define BOOST_NO_COMPILER_CONFIG either on the command line, or in - <boost/config/user.hpp>, and miss out the compiler configuration header - altogether (actually you miss out two headers, one which works out what the - compiler is, and one that configures boost for it). This has two consequences: - the first is that less code has to be compiled, and the second that you have - removed a dependency on two boost headers.

-

Example 3: using configure script to freeze the boost configuration.

-

If you are working on a unix-like platform then you can use the configure - script to generate a "frozen" configuration based on your current compiler - setup - see using the configure script for more - details.

-

Testing the boost configuration

-

The boost configuration library provides a full set of regression test programs - under the <boost-root>/libs/config/test/ sub-directory:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

File

-

Description

-
config_info.cppPrints out a detailed description of your - compiler/standard library/platform setup, plus your current boost - configuration. The information provided by this program useful in setting up - the boost configuration files. If you report that boost is incorrectly - configured for your compiler/library/platform then please include the output - from this program when reporting the changes required.
config_test.cppA monolithic test program that includes most of the - individual test cases. This provides a quick check to see if boost is correctly - configured for your compiler/library/platform.
limits_test.cppTests your standard library's std::numeric_limits - implementation (or its boost provided replacement if BOOST_NO_LIMITS is - defined). This test file fails with most versions of numeric_limits, mainly due - to the way that some compilers treat NAN's and infinity.
no_*pass.cppIndividual compiler defect test files. Each of these - should compile, if one does not then the corresponding BOOST_NO_XXX macro needs - to be defined - see each test file for specific details.
no_*fail.cppIndividual compiler defect test files. Each of these - should not compile, if one does then the corresponding BOOST_NO_XXX - macro is defined when it need not be - see each test file for specific details.
has_*pass.cppIndividual feature test files. If one of these does not - compile then the corresponding BOOST_HAS_XXX macro is defined when it should - not be - see each test file for specific details.
has_*fail.cppIndividual feature test files. If one of these does - compile then the corresponding BOOST_HAS_XXX macro can be safely defined - see - each test file for specific details.
-

Although you can run the configuration regression tests as individual test - files, there are rather a lot of them, so there are a couple of shortcuts to - help you out:

-

If you have built the boost regression test - driver, then you can use this to produce a nice html formatted report of - the results using the supplied test file.

-

Alternatively you can run the configure script like this:

-
./configure --enable-test
-

in which case the script will test the current configuration rather than - creating a new one from scratch.

-

If you are reporting the results of these tests for a new - platform/library/compiler then please include a log of the full compiler - output, the output from config_info.cpp, and the pass/fail test results.

-

Boost Macro Reference

-

Macros that describe defects:

-

The following macros all describe features that are required by the C++ - standard, if one of the following macros is defined, then it represents a - defect in the compiler's conformance with the standard.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Macro

-

Section

-

Description

-
BOOST_BCB_PARTIAL_SPECIALIZATION_BUGCompilerThe compiler exibits certain partial specialisation bug - probably Borland C++ - Builder specific.
BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADLCompilerArgument dependent lookup fails if there is a using - declaration for the symbol being looked up in the current scope.  For - example, using boost::get_pointer; prevents ADL from finding - overloads of get_pointer in namespaces nested inside boost (but - not elsewhere).  Probably Borland specific.
BOOST_NO_ARGUMENT_DEPENDENT_LOOKUPCompilerCompiler does not implement argument-dependent lookup - (also named Koenig lookup); see std::3.4.2 [basic.koenig.lookup]
BOOST_NO_AUTO_PTRStandard libraryIf the compiler / library supplies non-standard or - broken std::auto_ptr.
BOOST_NO_CTYPE_FUNCTIONSPlatformThe Platform does not provide functions for the - character-classifying operations <ctype.h> and <cctype>, only - macros.
BOOST_NO_CV_SPECIALIZATIONSCompilerIf template specialisations for cv-qualified types - conflict with a specialisation for a cv-unqualififed type.
BOOST_NO_CV_VOID_SPECIALIZATIONSCompilerIf template specialisations for cv-void types - conflict with a specialisation for void.
BOOST_NO_CWCHARPlatformThe Platform does not provide <wchar.h> and - <cwchar>.
BOOST_NO_CWCTYPEPlatformThe Platform does not provide <wctype.h> and - <cwctype>.
BOOST_NO_DEPENDENT_NESTED_DERIVATIONSCompilerThe compiler fails to compile a nested class that has - a dependent base class:
template<typename T>
-struct foo : {
-   template<typename U>
-   struct bar : public U {};
-};
-
BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERSCompilerTemplate value parameters cannot have a dependent - type, for example:
template<class T, typename T::type value> 
-class X { ... };
-
BOOST_NO_EXCEPTION_STD_NAMESPACEStandard LibraryThe standard library does not put some or all of the contents of - <exception> in namespace std.
BOOST_NO_EXCEPTIONSCompilerThe compiler does not support exception handling (this setting is typically - required by many C++ compilers for embedded platforms). Note that there is no - requirement for boost libraries to honor this configuration setting - indeed - doing so may be impossible in some cases. Those libraries that do honor this - will typically abort if a critical error occurs - you have been warned!
BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTSCompilerCan only use deduced template arguments when calling - function template instantiations.
BOOST_NO_FUNCTION_TEMPLATE_ORDERINGCompilerThe compiler does not perform function template - ordering or its function template ordering is incorrect. -
template<typename T> void f(T); // #1
-template<typename T, typename U> void f(T (*)(U)); // #2
-
-void bar(int);
-
-f(&bar); // should choose #2.
-
BOOST_NO_INCLASS_MEMBER_INITIALIZATIONCompilerCompiler violates std::9.4.2/4.
BOOST_NO_INTRINSIC_WCHAR_TCompilerThe C++ implementation does not provide wchar_t, or - it is really a synonym for another integral type. Use this symbol to decide - whether it is appropriate to explicitly specialize a template on wchar_t if - there is already a specialization for other integer types.
BOOST_NO_IS_ABSTRACTCompilerThe C++ compiler does not support SFINAE with - abstract types, this is covered by - Core Language DR337, but is not part of the current standard.  - Fortunately most compilers that support SFINAE also support this DR.
BOOST_NO_LIMITSStandard libraryThe C++ implementation does not provide the - <limits> header. Never check for this symbol in library code; always - include <boost/limits.hpp>, which guarantees to provide std::numeric_limits.
BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTSStandard libraryConstants such as numeric_limits<T>::is_signed - are not available for use at compile-time.
BOOST_NO_LONG_LONG_NUMERIC_LIMITSStandard libraryThere is no specialization for numeric_limits<long long> and - numeric_limits<unsigned long long>. <boost/limits.hpp> will then - add these specializations as a standard library "fix" only if the compiler - supports the long long datatype.
BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONSCompilerThe compiler does not support the specialization of individual member - functions of template classes.
BOOST_NO_MEMBER_TEMPLATE_KEYWORDCompilerIf the compiler supports member templates, but not - the template keyword when accessing member template classes.
BOOST_NO_MEMBER_TEMPLATE_FRIENDSCompilerMember template friend syntax ("template<class - P> friend class frd;") described in the C++ Standard, 14.5.3, not supported.
BOOST_NO_MEMBER_TEMPLATESCompilerMember template functions not fully supported.
BOOST_NO_MS_INT64_NUMERIC_LIMITSStandard libraryThere is no specialization for numeric_limits<__int64> and - numeric_limits<unsigned __int64>. <boost/limits.hpp> will then add - these specializations as a standard library "fix", only if the compiler - supports the __int64 datatype.
BOOST_NO_OPERATORS_IN_NAMESPACECompilerCompiler requires inherited operator friend functions - to be defined at namespace scope, then using'ed to boost. Probably GCC - specific. See boost/operators.hpp for - example.
BOOST_NO_POINTER_TO_MEMBER_CONSTCompilerThe compiler does not correctly handle pointers to - const member functions, preventing use of these in overloaded function - templates. See boost/functional.hpp for - example.
BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERSCompilerPointers to members don't work when used as template - parameters.
BOOST_NO_PRIVATE_IN_AGGREGATECompilerThe compiler misreads 8.5.1, treating classes as - non-aggregate if they contain private or protected member functions.
BOOST_NO_SFINAECompilerThe compiler does not support the "Substitution - Failure Is Not An Error" meta-programming idiom.
BOOST_NO_STD_ALLOCATORStandard libraryThe C++ standard library does not provide a standards - conforming std::allocator.
BOOST_NO_STD_DISTANCEStandard libraryThe platform does not have a conforming version of - std::distance.
BOOST_NO_STD_ITERATORStandard libraryThe C++ implementation fails to provide the - std::iterator class.
BOOST_NO_STD_ITERATOR_TRAITSStandard libraryThe compiler does not provide a standard compliant - implementation of std::iterator_traits. Note that the compiler may still have a - non-standard implementation.
BOOST_NO_STD_LOCALEStandard libraryThe standard library lacks std::locale.
BOOST_NO_STD_MESSAGESStandard libraryThe standard library lacks a conforming std::messages - facet.
BOOST_NO_STD_MIN_MAXStandard libraryThe C++ standard library does not provide the min() - and max() template functions that should be in <algorithm>.
BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGNStandard libraryDefined if the standard library's output iterators are not - assignable.
BOOST_NO_STD_USE_FACETStandard libraryThe standard library lacks a conforming - std::use_facet.
BOOST_NO_STD_WSTREAMBUFStandard libraryThe standard library's implementation of std::basic_streambuf<wchar_t> - is either missing, incomplete, or buggy.
BOOST_NO_STD_WSTRINGStandard libraryThe standard library lacks std::wstring.
BOOST_NO_STDC_NAMESPACECompiler/PlatformThe contents of C++ standard headers for C library - functions (the <c...> headers) have not been placed in namespace std. - This test is difficult - some libraries "fake" the std C functions by adding - using declarations to import them into namespace std, unfortunately they don't - necessarily catch all of them...
BOOST_NO_STRINGSTREAMStandard libraryThe C++ implementation does not provide the - <sstream> header.
BOOST_NO_SWPRINTFPlatformThe platform does not have a conforming version of - swprintf.
BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATIONCompilerClass template partial specialization (14.5.4 - [temp.class.spec]) not supported.
BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORSStandard libraryThe standard library does not provide templated - iterator constructors for its containers.
BOOST_NO_TEMPLATE_TEMPLATESCompilerThe compiler does not support template template parameters.
BOOST_NO_UNREACHABLE_RETURN_DETECTIONCompilerIf a return is unreachable, then no return statement should be required, - however some compilers insist on it, while other issue a bunch of warnings if - it is in fact present.
BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASECompilerThe compiler will not accept a using - declaration that brings a function from a typename used as a base - class into a derived class if functions of the same name are present - in the derived class.
BOOST_NO_USING_TEMPLATECompilerThe compiler will not accept a using declaration that - imports a template class or function from another namespace. Originally a - Borland specific problem with imports to/from the global namespace, extended to - MSVC6 which has a specific issue with importing template classes (but not - functions).
BOOST_NO_VOID_RETURNSCompilerThe compiler does not allow a void function to return - the result of calling another void function. -
void f() {}
-void g() { return f(); }
-
-

Macros that describe optional features:

-

The following macros describe features that are not required by the C++ - standard. The macro is only defined if the feature is present.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Macro

-

Section

-

Description

-
BOOST_HAS_BETHREADSPlatformThe platform supports BeOS style threads.
BOOST_HAS_CLOCK_GETTIMEPlatformThe platform has the POSIX API clock_gettime.
BOOST_HAS_DECLSPEC - CompilerThe compiler uses __declspec(dllexport) and __declspec(dllimport) to - export/import symbols from dll's.
BOOST_HAS_DIRENT_HPlatformThe platform has the POSIX header <dirent.h>.
BOOST_HAS_EXPM1PlatformThe platform has the functions expm1 expm1f and expm1l in <math.h>
BOOST_HAS_FTIMEPlatformThe platform has the Win32 API GetSystemTimeAsFileTime.
BOOST_HAS_GETTIMEOFDAYPlatformThe platform has the POSIX API gettimeofday.
BOOST_HAS_HASHStandard libraryThe C++ implementation provides the (SGI) hash_set - and hash_map classes. When defined, BOOST_HASH_SET_HEADER and - BOOST_HASH_LIST_HEADER will contain the names of the header needed to access - hash_set and hash_map; BOOST_STD_EXTENSION_NAMESPACE will provide the namespace - in which the two class templates reside.
BOOST_HAS_LOG1PPlatformThe platform has the functions log1p, log1pf and - log1pl in <math.h>.
BOOST_HAS_MACRO_USE_FACETStandard libraryThe standard library lacks a conforming - std::use_facet, but has a macro _USE(loc, Type) that does the job. This is - primarily for the Dinkumware std lib.
BOOST_HAS_MS_INT64CompilerThe compiler supports the __int64 data type.
BOOST_HAS_NANOSLEEPPlatformThe platform has the POSIX API nanosleep.
BOOST_HAS_NL_TYPES_HPlatformThe platform has an <nl_types.h>.
BOOST_HAS_NRVOCompilerIndicated that the compiler supports the named return value optimization - (NRVO). Used to select the most efficient implementation for some function. See - boost/operators.hpp for example.
BOOST_HAS_PARTIAL_STD_ALLOCATORStandard LibraryThe standard library has a partially conforming std::allocator class, but - without any of the member templates.
BOOST_HAS_PTHREAD_DELAY_NPPlatformThe platform has the POSIX API pthread_delay_np.
BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPEPlatformThe platform has the POSIX API pthread_mutexattr_settype.
BOOST_HAS_PTHREAD_YIELDPlatformThe platform has the POSIX API pthread_yield.
BOOST_HAS_PTHREADSPlatformThe platform support POSIX style threads.
BOOST_HAS_SCHED_YIELDPlatformThe platform has the POSIX API sched_yield.
BOOST_HAS_SGI_TYPE_TRAITSCompiler/standard libraryThe compiler has native support for SGI style type traits.
BOOST_HAS_STDINT_HPlatformThe platform has a <stdint.h>
BOOST_HAS_SLISTStandard libraryThe C++ implementation provides the (SGI) slist - class. When defined, BOOST_SLIST_HEADER will contain the name of the header - needed to access slist and BOOST_STD_EXTENSION_NAMESPACE will provide the - namespace in which slist resides.
BOOST_HAS_STLP_USE_FACETStandard libraryThe standard library lacks a conforming - std::use_facet, but has a workaround class-version that does the job. This is - primarily for the STLport std lib.
BOOST_HAS_TR1_ARRAYStandard libraryThe library has a TR1 conforming version of - <array>
BOOST_HAS_TR1_COMPLEX_OVERLOADSStandard libraryThe library has a version of <complex> that - supports passing scalars to the complex number algorithms.
BOOST_HAS_TR1_COMPLEX_INVERSE_TRIGStandard libraryThe library has a version of <complex> that - includes the new inverse trig functions from TR1.
BOOST_HAS_TR1_REFERENCE_WRAPPERStandard libraryThe library has TR1 conforming reference wrappers in - <functional>.
BOOST_HAS_TR1_RESULT_OFStandard libraryThe library has a TR1 conforming result_of template - in <functional>.
BOOST_HAS_TR1_MEM_FNStandard libraryThe library has a TR1 conforming mem_fn function - template in <functional>.
BOOST_HAS_TR1_BINDStandard libraryThe library has a TR1 conforming bind function - template in <functional>.
BOOST_HAS_TR1_FUNCTIONStandard libraryThe library has a TR1 conforming function - class template in <functional>.
BOOST_HAS_TR1_HASHStandard libraryThe library has a TR1 conforming hash function - template in <functional>.
BOOST_HAS_TR1_SHARED_PTRStandard libraryThe library has a TR1 conforming shared_ptr - class template in <memory>.
BOOST_HAS_TR1_RANDOMStandard libraryThe library has a TR1 conforming version of - <random>.
BOOST_HAS_TR1_REGEXStandard libraryThe library has a TR1 conforming version of - <regex>.
BOOST_HAS_TR1_TUPLEStandard libraryThe library has a TR1 conforming version of - <tuple>.
BOOST_HAS_TR1_TYPE_TRAITSStandard libraryThe library has a TR1 conforming version of - <type_traits>.
BOOST_HAS_TR1_UTILITYStandard libraryThe library has the TR1 additions to <utility> - (tuple interface to std::pair).
BOOST_HAS_TR1_UNORDERED_MAPStandard libraryThe library has a TR1 conforming version of - <unordered_map>.
BOOST_HAS_TR1_UNORDERED_SETStandard libraryThe library has a TR1 conforming version of - <unordered_set>.
BOOST_HAS_TR1Standard libraryImplies all the other BOOST_HAS_TR1_* macros should - be set.
BOOST_HAS_THREADSPlatform/compilerDefined if the compiler, in its current translation - mode, supports multiple threads of execution.
BOOST_HAS_TWO_ARG_USE_FACETStandard libraryThe standard library lacks a conforming - std::use_facet, but has a two argument version that does the job. This is - primarily for the Rogue Wave std lib.
BOOST_HAS_UNISTD_HPlatformThe Platform provides <unistd.h>.
BOOST_HAS_WINTHREADSPlatformThe platform supports MS Windows style threads.
BOOST_MSVC_STD_ITERATORStandard libraryMicrosoft's broken version of std::iterator is being - used. This implies that std::iterator takes no more than two template - parameters.
BOOST_MSVC6_MEMBER_TEMPLATESCompilerMicrosoft Visual C++ 6.0 has enough member template - idiosyncrasies (being polite) that BOOST_NO_MEMBER_TEMPLATES is defined for - this compiler. BOOST_MSVC6_MEMBER_TEMPLATES is defined to allow compiler - specific workarounds. This macro gets defined automatically if - BOOST_NO_MEMBER_TEMPLATES is not defined - in other words this is treated as a - strict subset of the features required by the standard.
BOOST_HAS_STDINT_HPlatformThere are no 1998 C++ Standard headers - <stdint.h> or <cstdint>, although the 1999 C Standard does include - <stdint.h>. If <stdint.h> is present, <boost/stdint.h> can - make good use of it, so a flag is supplied (signalling presence; thus the - default is not present, conforming to the current C++ standard).
-

Macros that describe C++0x features

-

The following macros describe features that are likely to be included in the - upcoming ISO C++ standard, C++0x.

- - - - - - - - - - - - - - - - - - - - - - - - - -

Macro

-

Description

-
BOOST_HAS_CONCEPTS - The compiler supports - concepts. Note: concepts have been proposed for C++0x, but have - not yet been approved for inclusion in the language. -
BOOST_HAS_LONG_LONGThe compiler supports the long long data type.
BOOST_HAS_RVALUE_REFS - The compiler supports - rvalue references. -
BOOST_HAS_STATIC_ASSERT - The compiler supports - static assertions. -
BOOST_HAS_VARIADIC_TMPL - The compiler supports - variadic templates. Note: variadic templates have been proposed - for C++0x, but have not yet been approved for inclusion in the language. -
-

Boost Helper Macros

-

The following macros are either simple helpers, or macros that provide - workarounds for compiler/standard library defects.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Macro

-

Description

-
BOOST_DEDUCED_TYPENAMESome compilers don't support the use of typename - for dependent types in deduced contexts. This macro expands to nothing on those - compilers, and typename elsewhere. For example, replace:
template <class T> void f(T, typename T::type);
-

with:

-
template <class T> void f(T, BOOST_DEDUCED_TYPENAME T::type);
-
BOOST_HASH_MAP_HEADERThe header to include to get the SGI hash_map class. This macro is only - available if BOOST_HAS_HASH is defined.
BOOST_HASH_SET_HEADERThe header to include to get the SGI hash_set class. This macro is only - available if BOOST_HAS_HASH is defined.
BOOST_SLIST_HEADERThe header to include to get the SGI slist class. This macro is only available - if BOOST_HAS_SLIST is defined.
BOOST_STD_EXTENSION_NAMESPACEThe namespace used for std library extensions (hashtable classes etc).
BOOST_STATIC_CONSTANT(Type, assignment)On compilers which don't allow in-class - initialization of static integral constant members, we must use enums as a - workaround if we want the constants to be available at compile-time. This macro - gives us a convenient way to declare such constants. For example instead of:
struct foo{
-   static const int value = 2;
-};
-

use:

-
struct foo{
-   BOOST_STATIC_CONSTANT(int, value = 2);
-};
-
BOOST_UNREACHABLE_RETURN(result)Normally evaluates to nothing, but evaluates to return - x; if the compiler requires a return, even when it can never be - reached.
BOOST_EXPLICIT_TEMPLATE_TYPE(t)
- BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
- BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t)
- BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
-
Some compilers silently "fold" different function template instantiations if - some of the template parameters don't appear in the function parameter list. - For instance: -
  #include <iostream>
-  #include <ostream>
-  #include <typeinfo>
-
-  template <int n>
-  void f() { std::cout << n << ' '; }
-
-  template <typename T>
-  void g() { std::cout << typeid(T).name() << ' '; }
-
-  int main() {
-    f<1>();
-    f<2>();
-
-    g<int>();
-    g<double>();
-  }
-
- incorrectly outputs "2 2 double double " on VC++ 6. These macros, to - be used in the function parameter list, fix the problem without effects on the - calling syntax. For instance, in the case above write: -
  template <int n>
-  void f(BOOST_EXPLICIT_TEMPLATE_NON_TYPE(int, n)) { ... }
-
-  template <typename T>
-  void g(BOOST_EXPLICIT_TEMPLATE_TYPE(T)) { ... }
-
- Beware that they can declare (for affected compilers) a dummy defaulted parameter, - so they -
-
- a) should be always invoked *at the end* of the parameter list -
- b) can't be used if your function template is multiply declared. -
-
- Furthermore, in order to add any needed comma separator, an "APPEND_*" version - must be used when the macro invocation appears after a normal parameter - declaration or after the invocation of another macro of this same group. -
BOOST_USE_FACET(Type, loc)When the standard library does not have a comforming - std::use_facet there are various workarounds available, but they differ from - library to library. This macro provides a consistent way to access a locale's - facets. For example, replace:
std::use_facet<Type>(loc);
-

with:

-
BOOST_USE_FACET(Type, loc);
-

Note do not add a std:: prefix to the front of BOOST_USE_FACET.

-
BOOST_HAS_FACET(Type, loc)When the standard library does not have a comforming - std::has_facet there are various workarounds available, but they differ from - library to library. This macro provides a consistent way to check a locale's - facets. For example, replace:
std::has_facet<Type>(loc);
-

with:

-
BOOST_HAS_FACET(Type, loc);
-

Note do not add a std:: prefix to the front of BOOST_HAS_FACET.

-
BOOST_NESTED_TEMPLATEMember templates are supported by some compilers even - though they can't use the A::template member<U> syntax, as a workaround - replace:
typedef typename A::template rebind<U> binder;
-

with:

-
typedef typename A::BOOST_NESTED_TEMPLATE rebind<U> binder;
-
BOOST_STRINGIZE(X)Converts the parameter X to a string after macro - replacement on X has been performed.
BOOST_JOIN(X,Y)This piece of macro magic joins the two arguments - together, even when one of the arguments is itself a macro (see 16.3.1 in C++ - standard). This is normally used to create a mangled name in combination with a - predefined macro such a __LINE__.
-

Boost Informational Macros

-

The following macros describe boost features; these are, generally speaking the - only boost macros that should be tested in user code.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Macro

-

Header

-

Description

-
BOOST_VERSION<boost/version.hpp>Describes the boost version number in XXYYZZ format - such that: (BOOST_VERSION % 100) is the sub-minor version, ((BOOST_VERSION / - 100) % 1000) is the minor version, and (BOOST_VERSION / 100000) is the major - version.
BOOST_NO_INT64_T<boost/cstdint.hpp>

<boost/stdint.h>

-
Defined if there are no 64-bit integral types: - int64_t, uint64_t etc.
BOOST_NO_INTEGRAL_INT64_T<boost/cstdint.hpp>

<boost/stdint.h>

-
Defined if int64_t as defined by - <boost/cstdint.hpp> is not usable in integral constant expressions.
BOOST_MSVC<boost/config.hpp>Defined if the compiler is really Microsoft Visual C++, as - opposed to one of the many other compilers that also define _MSC_VER.
BOOST_INTEL<boost/config.hpp>Defined if the compiler is an Intel compiler, takes the same - value as the compiler version macro.
BOOST_WINDOWS<boost/config.hpp>Defined if the Windows platfrom API is available.
BOOST_DINKUMWARE_STDLIB<boost/config.hpp>Defined if the dinkumware standard library is in use, takes the same value as - the Dinkumware library version macro _CPPLIB_VER if defined, otherwise 1.
BOOST_NO_WREGEX<boost/regex.hpp>Defined if the regex library does not support wide - character regular expressions.
BOOST_COMPILER<boost/config.hpp>Defined as a string describing the name and version - number of the compiler in use. Mainly for debugging the configuration.
BOOST_STDLIB<boost/config.hpp>Defined as a string describing the name and version - number of the standard library in use. Mainly for debugging the configuration.
BOOST_PLATFORM<boost/config.hpp>Defined as a string describing the name of the - platform. Mainly for debugging the configuration.
-

-

Macros for libraries with separate source code

-

The following macros and helper headers are of use to authors whose libraries - include separate source code, and are intended to address two issues: fixing - the ABI of the compiled library, and selecting which compiled library to link - against based upon the compilers settings.

-
ABI Fixing
-

When linking against a pre-compiled library it vital that the ABI used by the - compiler when building the library matches exactly the ABI - used by the code using the library.  In this case ABI means things like - the struct packing arrangement used, the name mangling scheme used, or the size - of some types (enum types for example).  This is separate from things like - threading support, or runtime library variations, which have to be dealt with - by build variants.  To put this in perspective there is one compiler - (Borland's) that has so many compiler options that make subtle changes to the - ABI, that at least in theory there 3200 combinations, and that's without - considering runtime library variations.  Fortunately these variations can - be managed by #pragma's that tell the compiler what ABI to use for the types - declared in your library. In order to avoid sprinkling #pragma's all over the - boost headers, there are some prefix and suffix headers that do the job. - Typical usage is:

-

my_library.cpp

-
-
#ifndef MY_INCLUDE_GUARD
-#define MY_INCLUDE_GUARD
-
-// all includes go here:
-#include <boost/config.hpp>
-#include <whatever>
-
-#include <boost/config/abi_prefix.hpp>  // must be the last #include
-
-namespace boost{
-// your code goes here
-} 
-
-#include <boost/config/abi_suffix.hpp>  // pops abi_prefix.hpp pragmas
-
-#endif // include guard
-
-
-

my_library.cpp

-
-
...
-// nothing special need be done in the implementation file
-...
-
-

The user can disable this mechanism by defining BOOST_DISABLE_ABI_HEADERS, or - they can define BOOST_ABI_PREFIX and/or BOOST_ABI_SUFFIX to point to their own - prefix/suffix headers if they so wish.

-
Automatic library selection
-

It is essential that users link to a build of a library which was built against - the same runtime library that their application will be built against - if this - does not happen then the library will not be binary compatible with their own - code - and there is a high likelihood  that their application will - experience runtime crashes.  These kinds of problems can be extremely - time consuming and difficult to debug, and often lead to frustrated users and - authors alike (simply selecting the right library to link against is not as - easy as it seems when their are 6-8 of them to chose from, and some users seem - to be blissfully unaware that there even are different runtimes available to - them).

-

To solve this issue, some compilers allow source code to contain #pragma's that - instruct the linker which library to link against, all the user need do is - include the headers they need, place the compiled libraries in their library - search path, and the compiler and linker do the rest.  Boost.config - supports this via the header <boost/config/auto_link.hpp>, before - including this header one or more of the following macros need to be defined:

- - - - - - - - - - - - - -
BOOST_LIB_NAME - Required: An identifier containing the basename of the library, for - example 'boost_regex'.
BOOST_DYN_LINKOptional: when set link to dll rather than static library.
BOOST_LIB_DIAGNOSTICOptional: when set the header will print out the name of the library selected - (useful for debugging).
-

If the compiler supports this mechanism, then it will be told to link against - the appropriately named library, the actual algorithm used to mangle the name - of the library is documented inside <boost/config/auto_link.hpp> and has - to match that used to create the libraries via bjam 's install rules.

-

Typical usage is:

-

my_library.hpp

-
-
...
-//
-// Don't include auto-linking code if the user has disabled it by
-// defining BOOST_ALL_NO_LIB, or BOOST_MY_LIBRARY_NO_LIB, or if this 
-// is one of our own source files (signified by BOOST_MY_LIBRARY_SOURCE):
-//
-#if !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_MY_LIBRARY_NO_LIB) && !defined(BOOST_MY_LIBRARY_SOURCE)
-#  define BOOST_LIB_NAME boost_my_library
-#  ifdef BOOST_MY_LIBRARY_DYN_LINK
-#     define BOOST_DYN_LINK
-#  endif
-#  include <boost/config/auto_link.hpp>
-#endif
-...
-
-
-

my_library.cpp

-
-
// define BOOST_MY_LIBRARY_SOURCE so that the header knows that the
-// library is being built (possibly exporting rather than importing code)
-//
-#define BOOST_MY_LIBRARY_SOURCE 
-
-#include <boost/my_library/my_library.hpp>
-...
-
-

Guidelines for Boost Authors

-

The boost/config.hpp header is used to - pass configuration information to other boost files, allowing them to cope with - platform dependencies such as arithmetic byte ordering, compiler pragmas, or - compiler shortcomings. Without such configuration information, many current - compilers would not work with the Boost libraries.

-

Centralizing configuration information in this header reduces the number of - files that must be modified when porting libraries to new platforms, or when - compilers are updated. Ideally, no other files would have to be modified when - porting to a new platform.

-

Configuration headers are controversial because some view them as condoning - broken compilers and encouraging non-standard subsets. Adding settings for - additional platforms and maintaining existing settings can also be a problem. - In other words, configuration headers are a necessary evil rather than a - desirable feature. The boost config.hpp policy is designed to minimize the - problems and maximize the benefits of a configuration header.

-

Note that:

- -

Adding New Defect Macros

-

When you need to add a new defect macro - either to fix a problem with an - existing library, or when adding a new library - distil the issue down to a - simple test case; often, at this point other (possibly better) workarounds may - become apparent. Secondly always post the test case code to the boost mailing - list and invite comments; remember that C++ is complex and that sometimes what - may appear a defect, may in fact turn out to be a problem with the authors - understanding of the standard.

-

When you name the macro, follow the BOOST_NO_SOMETHING naming convention, so - that it's obvious that this is a macro reporting a defect.

-

Finally, add the test program to the regression tests. You will need to place - the test case in a .ipp file with the following comments near the top:

-
//  MACRO:         BOOST_NO_FOO
-//  TITLE:         foo
-//  DESCRIPTION:   If the compiler fails to support foo
-

These comments are processed by the autoconf script, so make sure the format - follows the one given. The file should be named "boost_no_foo.ipp", where foo - is the defect description - try and keep the file name under the Mac 30 - character filename limit though. You will also need to provide a function - prototype "int test()" that is declared in a namespace with the same name as - the macro, but in all lower case, and which returns zero on success:

-
namespace boost_no_foo{
-
-int test()
-{
-   // test code goes here:
-   //
-   return 0;
-}
-
-}
-

- Once the test code is in place in libs/config/test, updating the configuration - test system proceeds as:

- -

Then you should:

- -

Adding New Feature Test Macros

-

When you need to add a macro that describes a feature that the standard does - not require, follow the convention for adding a new defect macro (above), but - call the macro BOOST_HAS_FOO, and name the test file "boost_has_foo.ipp". Try - not to add feature test macros unnecessarily, if there is a platform specific - macro that can already be used (for example _WIN32, __BEOS__, or __linux) to - identify the feature then use that. Try to keep the macro to a feature group, - or header name, rather than one specific API (for example BOOST_HAS_NL_TYPES_H - rather than BOOST_HAS_CATOPEN). If the macro describes a POSIX feature group, - then add boilerplate code to boost/config/suffix.hpp - to auto-detect the feature where possible (if you are wondering why we can't - use POSIX feature test macro directly, remember that many of these features can - be added by third party libraries, and are not therefore identified inside - <unistd.h>).

-

Modifying the Boost Configuration Headers

-

The aim of boost's configuration setup is that the configuration headers should - be relatively stable - a boost user should not have to recompile their code - just because the configuration for some compiler that they're not interested in - has changed. Separating the configuration into separate compiler/standard - library/platform sections provides for part of this stability, but boost - authors require some amount of restraint as well, in particular:

-

<boost/config.hpp> should never - change, don't alter this file.

-

<boost/config/user.hpp> is - included by default, don't add extra code to this file unless you have to. If - you do, please remember to update libs/config/tools/configure.in - as well.

-

<boost/config/suffix.hpp> is - always included so be careful about modifying this file as it breaks - dependencies for everyone. This file should include only "boilerplate" - configuration code, and generally should change only when new macros are added.

-

<boost/config/select_compiler_config.hpp>, - <boost/config/select_platform_config.hpp> - and <boost/config/select_stdlib_config.hpp> - are included by default and should change only if support for a new - compiler/standard library/platform is added.

-

The compiler/platform/standard library selection code is set up so that unknown - platforms are ignored and assumed to be fully standards compliant - this gives - unknown platforms a "sporting chance" of working "as is" even without running - the configure script.

-

When adding or modifying the individual mini-configs, assume that future, as - yet unreleased versions of compilers, have all the defects of the current - version. Although this is perhaps unnecessarily pessimistic, it cuts down on - the maintenance of these files, and experience suggests that pessimism is - better placed than optimism here!

-

Rationale

-

The problem with many traditional "textbook" implementations of configuration - headers (where all the configuration options are in a single "monolithic" - header) is that they violate certain fundamental software engineering - principles which would have the effect of making boost more fragile, more - difficult to maintain and more difficult to use safely. You can find a - description of the principles from the - following article.

-

The problem

-

Consider a situation in which you are concurrently developing on multiple - platforms. Then consider adding a new platform or changing the platform - definitions of an existing platform. What happens? Everything, and this does - literally mean everything, recompiles. Isn't it quite absurd that adding a new - platform, which has absolutely nothing to do with previously existing - platforms, means that all code on all existing platforms needs to be - recompiled?

-

Effectively, there is an imposed physical dependency between platforms that - have nothing to do with each other. Essentially, the traditional solution - employed by configuration headers does not conform to the Open-Closed - Principle:

-

"A module should be open for extension but closed for modification."

-

Extending a traditional configuration header implies modifying existing code.

-

Furthermore, consider the complexity and fragility of the platform detection - code. What if a simple change breaks the detection on some minor platform? What - if someone accidentally or on purpose (as a workaround for some other problem) - defines some platform dependent macros that are used by the detection code? A - traditional configuration header is one of the most volatile headers of the - entire library, and more stable elements of Boost would depend on it. This - violates the Stable Dependencies Principle:

-

"Depend in the direction of stability."

-

After even a minor change to a traditional configuration header on one minor - platform, almost everything on every platform should be tested if we follow - sound software engineering practice.

-

Another important issue is that it is not always possible to submit changes to - <boost/config.hpp>. Some boost users are currently working on platforms - using tools and libraries that are under strict Non-Disclosure Agreements. In - this situation it is impossible to submit changes to a traditional monolithic - configuration header, instead some method by which the user can insert their - own configuration code must be provided.

-

The solution

-

The approach taken by boost's configuration headers is to separate - configuration into three orthogonal parts: the compiler, the standard library - and the platform. Each compiler/standard library/platform gets its own - mini-configuration header, so that changes to one compiler's configuration (for - example) does not affect other compilers. In addition there are measures that - can be taken both to omit the compiler/standard library/platform detection code - (so that adding support to a new platform does not break dependencies), or to - freeze the configuration completely; providing almost complete protection - against dependency changes.

-

Acknowledgements

-

Beman Dawes provided the original config.hpp and part of this document. Vesa - Karvonen provided a description of the principles (see rationale) - and put together an early version of the current configuration setup. John - Maddock put together the configuration current code, the test programs, the - configuration script and the reference section of this document. Numerous boost - members, past and present, have contributed fixes to boost's configuration.

-

 

-
-

Copyright Beman Dawes 2001

-

Copyright Vesa Karvonen 2001

-

Copyright John Maddock 2001

-

Distributed under the Boost Software License, Version 1.0. (See accompanying - file LICENSE_1_0.txt or copy at - www.boost.org/LICENSE_1_0.txt).

-

 

-

 

-

 

-

 

-

 

+

Copyright John Maddock 2001

+

Distributed under the Boost Software License, Version 1.0. (See accompanying file + LICENSE_1_0.txt or copy at www.boost.org/LICENSE_1_0.txt).

+ + diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 index 47ed1950..d5c1591a 100644 --- a/doc/Jamfile.v2 +++ b/doc/Jamfile.v2 @@ -18,7 +18,7 @@ xml config : config.qbk ; - + boostbook standalone : config @@ -26,5 +26,30 @@ boostbook standalone toc.max.depth=2 toc.section.depth=2 chunk.section.depth=1 + boost.root=../../../.. + boost.libraries=../../../../libs/libraries.htm + navig.graphics=1 + + # PDF Options: + # TOC Generation: this is needed for FOP-0.9 and later: + #fop1.extensions=1 + # Or enable this if you're using XEP: + xep.extensions=1 + # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9! + fop.extensions=0 + # No indent on body text: + body.start.indent=0pt + # Margin size: + page.margin.inner=0.5in + # Margin size: + page.margin.outer=0.5in + # Yes, we want graphics for admonishments: + admon.graphics=1 + # Set this one for PDF generation *only*: + # default pnd graphics are awful in PDF form, + # better use SVG's instead: + #admon.graphics.extension=".svg" ; + + diff --git a/doc/acknowledgements.qbk b/doc/acknowledgements.qbk index 904a468f..adbbb906 100644 --- a/doc/acknowledgements.qbk +++ b/doc/acknowledgements.qbk @@ -22,8 +22,11 @@ John Maddock put together the configuration current code, the test programs, the configuration script and the reference section of this document. +Matias Capeletto converted the docs to quickbook format. + Numerous boost members, past and present, have contributed fixes to boost's configuration. [endsect] + diff --git a/doc/config.qbk b/doc/config.qbk index 5276f195..5ae62d10 100644 --- a/doc/config.qbk +++ b/doc/config.qbk @@ -1,4 +1,4 @@ -[library Boost.Config +[article Boost.Config [quickbook 1.4] [authors [Beman Dawes, Vesa Karvonen, John Maddock] ] [copyright 2001-2007 Beman Dawes, Vesa Karvonen, John Maddock] @@ -31,7 +31,7 @@ Distributed under the Boost Software License, Version 1.0. [def __STL_PORT__ [@http://stlport.sourceforge.net STLport]] [def __BOOST_TRACKER__ [@http://sourceforge.net/tracker/?group_id=7586 Tracker]] [def __CORE_LANGUAGE_DR337__ [@http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#337 Core Language DR337]] -[def __PRINCIPLES_AND_PATTERNS_ARTICLE__ [@http://www.objectmentor.com/resources/articles/ocp.pdf following article]] +[def __PRINCIPLES_AND_PATTERNS_ARTICLE__ [@http://http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf following article]] [/ Icons ] @@ -55,3 +55,5 @@ Distributed under the Boost Software License, Version 1.0. [include acknowledgements.qbk] + + diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index a6010603..741aebfa 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,28 +3,27 @@ Acknowledgements - - - + + + - - - - - - + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMoreBoost C++ LibrariesHomeLibrariesPeopleFAQMore

-PrevUpHome +PrevUpHome

Beman Dawes provided the original config.hpp and part of this document. @@ -48,7 +47,7 @@


-PrevUpHome +PrevUpHome
diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index bfffd27b..6c9c2810 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,30 +3,28 @@ Boost Macro Reference - - - - - + + + + + - - - - - - + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMoreBoost C++ LibrariesHomeLibrariesPeopleFAQMore

-PrevUpHomeNext +PrevUpHomeNext

The following macros all describe features that are required by the C++ standard, if one of the following macros is defined, then it represents a defect in @@ -1085,10 +1081,8 @@

The following macros describe features that are not required by the C++ standard. The macro is only defined if the feature is present. @@ -1994,10 +1988,8 @@

The following macros describe features that are likely to be included in the upcoming ISO C++ standard, C++0x. @@ -2090,10 +2082,8 @@

The following macros are either simple helpers, or macros that provide workarounds for compiler/standard library defects. @@ -2388,10 +2378,8 @@

The following macros describe boost features; these are, generally speaking the only boost macros that should be tested in user code. @@ -2628,10 +2616,8 @@

ABI Fixing
@@ -2646,10 +2632,8 @@

When linking against a pre-compiled library it vital that the ABI used by the compiler when building the library matches exactly @@ -2707,10 +2691,8 @@

It is essential that users link to a build of a library which was built against the same runtime library that their application will be built against @@ -2797,7 +2779,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index 7e0e28aa..9af848a2 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -1,34 +1,31 @@ -Guidelines for - Boost Authors +Guidelines for Boost Authors - - - + + + - - - - - - + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMoreBoost C++ LibrariesHomeLibrariesPeopleFAQMore

-PrevUpHomeNext +PrevUpHomeNext
Adding New Defect Macros
@@ -105,10 +102,8 @@

When you need to add a new defect macro -either to fix a problem with an existing library, or when adding a new library- distil the issue down to @@ -208,10 +203,8 @@

When you need to add a macro that describes a feature that the standard does not require, follow the convention for adding a new defect macro (above), @@ -233,10 +226,8 @@

The aim of boost's configuration setup is that the configuration headers should be relatively stable - a boost user should not have to recompile their @@ -289,7 +280,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/boost_config/rationale.html b/doc/html/boost_config/rationale.html index 887fc06d..ff11250f 100644 --- a/doc/html/boost_config/rationale.html +++ b/doc/html/boost_config/rationale.html @@ -3,30 +3,28 @@ Rationale - - - - + + + + - - - - - - + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMoreBoost C++ LibrariesHomeLibrariesPeopleFAQMore

-PrevUpHomeNext +PrevUpHomeNext

Consider a situation in which you are concurrently developing on multiple platforms. Then consider adding a new platform or changing the platform definitions @@ -105,8 +102,7 @@

The approach taken by boost's configuration headers is to separate configuration into three orthogonal parts: the compiler, the standard library and the platform. @@ -126,7 +122,7 @@


-PrevUpHomeNext +PrevUpHomeNext
diff --git a/doc/html/images/callouts/1.png b/doc/html/images/callouts/1.png deleted file mode 100644 index 6003ad3af44ecde89a963d5af6a4180217319dfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmV;20eJq2P)b;@5Jms&t_+qirbvUVh|&#BatJPvqeMAG3eJI2P~{ToLa~KgB*G#^M#2_a3)VYn zVgvz1M%rd}-qW9r=_zaNV-N&yold8HOHftSx7PZF znWv3J5s?VPuss+I+C&6q#(KSmloGvO?*KD1ilVq*tyW{LH5!R%28alCU1K(zVKSM( zIR_#-JRt<)I7YwUPn1$)t@RT#D|H;v7=y)Pfubl7MbX&`M1*d)3jm2RW~{Zwi6BW5 zye?*7-J8XwLb#oWGHAsf2pa!fFY62Q0 z;mh~sbZC{ErT1M9yl|fLa(G!7hF#A2`>Lu`ydhOplks@`lQAalo|fnN2VK{{wcG9H zTY#b{eg{GDnTTHQ5REaWv|6p^U@&Mh#y~_!(-f+z!m=!!&u45l8;nLH*tY%dbUHl; zL4Z3%xzibAkW#|;eavPv2qBOp2^Nb5%CdaSUa#k9n)Vz7!4nZ_%Ik=69OG~};Cj8n zFbsrYh;Fxw$z*~~r-Su+4bwDh5bZUt3;;luWw0y@oOA5=dklv|0Duqzx7$qs_)$wxRTZ)pymR;BV1>g5SZnxW9 zN=Z^m;+&I|lB%jADJ2y}K}Asz=bWM_DwoUU*VSs}Jc>j_Ri5WX6h;3nk(9E^^Zfhc b@<06n&dl<{Ml4d|00000NkvXXu0mjfA|==h diff --git a/doc/html/images/callouts/11.png b/doc/html/images/callouts/11.png deleted file mode 100644 index 821afc4fa84787cc97485b71e9f2078f45c93dca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 410 zcmV;L0cHM)P)M+td|6n+lpimUPx=_1S)c4H7YUPG|K7G}+Q zXD3BY$LW0J{_Y!?Z)RXbkxz7K`tz)v9=YBoPVL+Dl#6|9v864%XTq&y%0>7v#V81+C6pQ~&?~07*qoM6N<$ Ef)+u)Bme*a diff --git a/doc/html/images/callouts/12.png b/doc/html/images/callouts/12.png deleted file mode 100644 index 7cec72720fa9bb6f49fc4b405f7e36f20abe7fbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 488 zcmVP)PuxtyZYjYA&U;&lvlvl%n)GViZMKE|)kS zkFYEYm&*m+ZWonG1>^A;S(d@JZ2)kiDC#rD@FH+s7fF(UQVPQ`V4DBV62~#pG)1S= z0U-poZG&^}uGi}y+Ot5@G-O!@%d((p+5?_Wr)am^s8*{00M0p1rxOP-eGy10k!2Yi z#{mFrHXDpaBeYsAl*?rR!0mQJ6h-`SIJ_4Mg>Nq_2qB=9g75nfLSQ%?Vm_ZEj$&j0IHOdd7hsai^YGRNC+YG eJpcU+1HfO$s^?_o4trMs00004)gxr*N=Me5VesZgwj%cYwtNqcZr1 zC_xao_jajoUYEXSJjwZ;bCQPyLGYn0%a1|`74MX)s;6GB_lFQtKYCi8=bv<4|7n`0 z@g7hV#ep&QO-lLlKr}*#(rh-3ZntX?LLjBY`Fw_|s<3Sv$Kw%U7{anFbUK~R;cyr; z#_&LthfW9q=N!K8V>+Fpu4^Pog5`1vAq0XTz;3rgtJQKfO&c@DzDOxG?d^$i9AmrP z;(EQpvMk*1cl7&xn5K!vVgUf4lmdVo$MKjkh9|&vU7SuQXqpCH*I^h2Hk%D*vl$%6 z!C)`|Aq13C)OGFd_xtb4TR>41q-hGvvY;pmIOk}$+Zc^TNRk9X2mnA`*T}N02Jrg{ z5JDhLQ`okRs;V%b&yi&rvMd9o6pEstsw%{BTwgAimqw%U_2~u9Ii!^EJP)d>!f_l- zCKFIfF&qv-2zeUzJZ}fz_dl=K>zs2gIp?x0OUXHxLI_z^mAu_t^dUO<1U`T*_)UESUECTZgDyfaHIPO@ zV~8gA-qWSZ=hE+t2hQ)D1An$&uiuqr`9UeA;f>NX?a=G>elfjW3O+&NU1ON~b(liBt_qW?^90URG z2*2x$F-R%l`#z@ADTEMUjDazRG)*y?Ot9PS&~CR~UDwA!5PT*gU4MOI9LI>F2*8=YK-YB`hJhqWuv{)N7z~gk2^_}( zV+^)!LkQvS_xo@BHNZJXmSwOk3sOqVW;0Y(g~eil%jJSR&jA2J2;_M#04$#Xr4+I( zgX1{RG!4Vy5Uo}VQ52!m>40;Ns;Usju{fPhFQ#dJd3r%g2_k~$dElI*-|wTUD&%>N z(P#wD`O~oHdB5TN{-^DBTSzHMN=ao|l9ZB^Qlyl6^vbfNFbu2JYW01y*|?7&5s@m2 p;u?nGe?ugtR7Fwzd~E(#e*x=4{y$G>PWJ!+002ovPDHLkV1hgS;QRmp diff --git a/doc/html/images/callouts/15.png b/doc/html/images/callouts/15.png deleted file mode 100644 index 3fd6ac38603390bf6f9bbfdb85ddb203e2edc421..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 507 zcmVBYKkWd<`JW7;@NWpWE6kA22-~|X(5OQHtARz%p zgo})YY|I%?ny^`#?35$THzUn2T-SYK6o$hgE|&|GQZNhy)oRs}QuZCk`NYgpzCO|SeXLe1 zoX=5sUIS^G zA`C+qh5;hNcs#~#x5IY3#p!fHqtU?ac7yNxDhPt-d_MpA;Q}H8Go#sTBAd;k)9GL| z8UX;h-7cPGb1bv51I>iHMUVVItx*O__)|j$@AFn3E*o<#KtO&1T;` x&$C{F#LQ_FMe%aE{BMYeD2<}%$IIrw^#|YO0JIScbaVg!002ovPDHLkV1ffMg%HYe&5tuzq8hs@J33d((l1w@Pmj<(Q}ki?_Jk@sMTtf zw*YCH{*qFDX6DBN;t-LjR;!hMzhBAo9NX;{Ns_?#eKea*5D@@?nUN$(_k2Fjq?9Ni zqM$P~*6TG+rxT1Zn9t`h#(;=GL=Zxt(P*I6YIPjPnMo->GPC16S8TW27>~!$T4T4{ z!CL#`3q*u^y$%4KIF4shO56>E5a@Qh0DvF}FdB{Ey6&qx6cEqzI?Vj#g@G{!tJMlb zgvn$AA;c>{@$P!P8UWwL^X787M4F};4u}67&aw<~9GlDK@>njHKiv(YD8gc~faiG# z!w}Qy6un;Wzr()o|3nZ39}b6u(pvNFcDq-WWo)gzm)4q($78nHY`%tJ*eRe6Gh3xp o8b#4xm5bzgZk1Bs?wkMQ38E9=PG^kAEC2ui07*qoM6N<$g4YPrD*ylh diff --git a/doc/html/images/callouts/3.png b/doc/html/images/callouts/3.png deleted file mode 100644 index 3ff0a93931515bb97a045dfa61a8530d87e458fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 431 zcmV;g0Z{&lP)?w-3fw;Fb-ls zDri;RUK#8kv6dIk;e17_)v9tnpMMx*Y&>|jZU1k#+kc5jU2l$*@~7*%uccC{@JNuR z=|3UFGc%8`5{HPaVzF3gG#Ul1H5Q8nk|aSGhNx63AR+(&Gb2for`>Kh6hh!Cv95Mz z#%wl26h%-1BH{J6*Ukh&=Hmk zRECzB?yd`#@n#QU|E!Aozxu0ay*5o+uKTCg>-{Doo%e)N>T9`N{#mQl zDxU$a*Xx^<@&_}&`kN4wpI>%IqLW}MIG_VIWeN-2>; zoSaTXAR-uJFqup+8jWC#x%C~#L8H+?tJU&_5JM^DcV-r%7*T7D*=&aGc8h+$k5Z}h z;RGT=y2!)DNiZId zk)|oEwRfMXwMLR88o;j`!1sL&1_N9!7XU!B*}QAcvJ7z?>(lA<;(6X97K_EV-EOC> zwam=CTrN2bL%ydpO*x99EDXcv&1T~R`1b>51^@&>@S!foE^ZEjU=IL-nXOXl8b#6F j$hnL$Rw?ybGy}k2rA_2s#AqNWNL+{%m!bruZt@^q`VMYNAEFDN!c`Zp`V!qpMaG}43yDw*Mu`(* zCbz2uThU&a&4u&vojYu`S~+nXKc;Ca@XrV#zFpV-WQ--*&QMDAOw)X`ZM*azAc~?d zDdh_hjWdYB7~_^@m72|FNo$S8VuAgBk7~7wPNxITIRJo&a5x+uw%hGcN{I}@Gdg1o z%jFWY*$iQ?@7|P`` z05p8xA4(~a8)&V;ImciyK)>J5O>RMIwOWISUUP#W2;jOd9LK@wbh>-YBuNm4VFKVI zH`r`8m`o-J!w}Qy6y0tYrfFV<&*w9I-%o-d7#EAh=N!;(w_)2hMxzmk2%hKVKX5DD zYPB|b1tA1H&qJ@*L!nTB5CTN>OZ#sa01P5Zl~U1qy}sL9Yn>{k-Y>%d@B>ihzNus- RRfYfn002ovPDHLkV1oUuv|0cF diff --git a/doc/html/images/callouts/6.png b/doc/html/images/callouts/6.png deleted file mode 100644 index c943676beafa0562916b058c169951febcd3cddb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 431 zcmV;g0Z{&lP)2x}6wAN@OL1SlT zq-l!d@d)P}cDo(C_aGt=5rQCqQVQeoIFeFswANpkS;|ImKA(}MDdzJz27>|OIED~! zYat?pVF&fG5i@@eULRJg71rxDq9{V1 z=O32ooI_Pr4#2O6Kq&=lEvl+QS(Z>r{TII9@5r*u<$32$t61k>phVHje&-69M_ zOeT}3aFQf{9wiDPuv{*&SS-+LwIGB5Grx)b9tHr(%(b=ldN>?D{22he_qDb5=W7@M Z{sBv`yEO&CdT0Ou002ovPDHLkV1o2ux|09^ diff --git a/doc/html/images/callouts/7.png b/doc/html/images/callouts/7.png deleted file mode 100644 index 20940de30d2146b73118a08905955162fe985f68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 397 zcmV;80doF{P)^QMQBulp-}gU=C{Aa}81s!lqHiS0W-t%ynn-<=Y3{Rlv1MG?LtZkX1=)gZx{d+ rGh1U!IGfG>ygNw}Ym9k2g#q9P_H(VTcF&$q00000NkvXXu0mjfg$Ay% diff --git a/doc/html/images/callouts/8.png b/doc/html/images/callouts/8.png deleted file mode 100644 index d8e34d4a09f6dca4f9c22e626d9f9d82b969b02c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 434 zcmV;j0ZsmiP)2AuM{XfkN9S(EO_B7zVCVHjdQpD(18TdnnH=bV%s&@>J9`#qv4f)D~(mcd&4 zVg({X5Cj0QD2igMwT8TJhGB>}jsXCZ$prGB|9~*_BG2=u+m9^EFdmPw*=$hPHR3o1 zGrx*3Gped$06%UwxLhvqeIG=Gs;UqK0fZ0_;ihR&6a}Bp=jXv-@a4uUrH~{E(lkXF zhFGuH@I3F$uu|&R4VX@+h@uGAS_mP~@Au)HdolL^VE~ZMIcto$9*@U|aqp{bTWgH@ cejf&azhINZs#OUR!~g&Q07*qoM6N<$f@$x%rT_o{ diff --git a/doc/html/images/callouts/9.png b/doc/html/images/callouts/9.png deleted file mode 100644 index abe636072b61306fbcd6157b95dfdf7e86a77e5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 420 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 Xl8^Bmob3FM00000NkvXXu0mjfE@lpE diff --git a/doc/html/images/important.png b/doc/html/images/important.png deleted file mode 100755 index 54b4846b49cb77d09578e03fddef8173e5b2cde6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4666 zcmV-A62G`3_~1(L7mR zKUGhMx2k_t4S?);A}1*oHUJ=rm&W&Xv1bN{gfg+C01Hrn3Z#Ha1Sd7w%g@;#2(!`) z{w4250km?wr~B{E|HlxyNjxq95KhSP+^AHJkkf=5%T400)W=siGc8$IgB^uT=L;`T z$iXWd`Hd4-IOZGg{MzI1>mcMZ0C1$3uS__)!jWH@dTNC^vHTZ|9$8iKVVQ@W}MI#5CPF-v8*FmHqOK-dKIz2N0v;du_Au9k5>k zfRuc%sT~G@vKxSop6|8D;{bG)03iL8lg`ihRzs~UXg~lIKnF5F5vT%9pbLzE8L$Ml zzzMhmZ{QC?z(&9Uu^_dyc0+|wDO3g3 zK~2yv&^hQbbORcK9zqk)Ec7?@5k_DVOotU<4Oky$!*;L-><@2%W8f4x3(kZ0!4+^l zdFT=Os5m*4fgclHi5D^BVjOZe4!~yX}LXl{Mk8DQ@kaDCRX+^q`e&ik^K<1DS zC=7~*Vxn|WmMB+L0E&Z3L2XABp{h_PQ5~p0)IHP$Y993kO-9S3b%!WGkd&>UQzHAb&4HjBPEMcPB}}tLzxrDi))BGh)0NT7q1pSCq5>=AVHHbl<<~Fk|>gB zmbf7?L&Z`xs7_QaHII6XdWAYkLujfr2O5XAo7OUc z8cPOBZjr2(ydWuHAPfzL8zYfX%s9gsWqg!Ukg}7ClG-cPDm5&%C@m*#D;*_WAl)WC zBK=W@DdQxQAhTblQ|5^*N>*FeM>bRTi0oC_IXSwVr5s1DK<oxCdVYJv<30jA>?rOu@Cfc#u)!KJ- zU>#GPIGw{fL#xoM%vbSN)vp@UCF$DfX6Ux)PUtc8JoR$*I`v-ZtLca8@7M3w|6*Wb zkZ90g@Ys-Q=x&&6*lqZ?k+u=XsM_fMYVvC5)jL*qt$uB+V;p6C#Q1>;&BV)Ok4dk| zXHzp%zGo9{3`Z~no;)FRE|jKyD;x|Ru+&6YE3 zSZkuzG_0AlQn8A#sTRCcs@igG8*QiUwCv*TPT9S(H?Zg1 zx7#l|SU7BRxa5d9x;Pd%4mwet0-UOxo;s^I$2hk*&%2noWV>8)MZ0>q?spw?Q*h(B zHMz~Zo4Idu@ADve_<2-$JoD7{5|!CvlO2fW7Ds;}j(?eqrTZr%sHpR8l8OIi1u z55{MmPqoi;Uqjy<-+n)u-zL9izjyxj{>A=}12hBD19}4~fnkA7fr~+oL8U>0VEy22 z!M8$WL*hcZLb0KNp^c#n>z&pgTt5|N5|$q}x`DM}%Z3{pWj7{nys(L~DPq&vaCCT3 zcysut2=9pch=oYE$ePG`jsxcq=Ox#cTgIJ@vWhB=nvS-LE{&dvv5GkmGaG9YTOKW;h}Q#)ODp4>&)m9Xn}u0d{T?%Ul#ySwug@^KYwhG<(}FfQ9s80IJkH9-pajS3b+L~3k?d(3qKWcif;a7_*2DC%lo4D z4HlagA1T3<@JdGa+w4DCDp8tMI(fkBKt~y~tf1`e!A%EmlpB}V9wHn{KP0H|tmvv# zt1PMfR25q_Qf*(|RwG}tw`TD$_weu$+as;D3blo`ACJZzeNg98*HN!gUw#a8EaTYo zhQNmYd-uiq7gH~jUoOq%|0(fj z%`44Uzy4+W*T8)6{M2jy>*c?T-pIT;@z(fl@4~u;r|**9EiD$jmwA8k1N%e&$DohX zOPQarpDI3UeeV9^@nw8DX?a=X0wNa>xq!$8L@pq50g(%cTtMUkA{P+3fXD?zE+BFN zkqi7EyTI3fH^Lw*%ds&4{Idb@ybVBQ6#yF108qmI0k~xYKq6_U3IG5AAbM0-bYXRL zXm4@=0C?K-O)SYwELLz%EJ)2sEh)(d05UBGAqthp4*&oNNJ&INR7l5lS8H<|M-@GH z9{ZM7@72SxoER(zTecG$0s$(O6jgl72mS#c`CELasNy3jr&1&k>>}XU!Il%h;#f~> zrIq$MJ2QPb-7_n#158!#_U=sgz4zR6&+QRa{XKv;IecW7a)_I_%ZQpGOwv`8GzG~n zBso@31|k|EPK>IQ1mQCL;#u_zQzBj&;(6Rh?Dfi?`Mf9G`7=&#j2q@9{Dd(>)wD%p z2S9qHqCFamxkJpGF`pR#W%}*aylq7INv(`pLQ2pzK1<4ZO4kjkaaj-@u@M1wrj?DO48Vc>zYDkM<96 z8m4oG?$clkNOlMTqw|VfG}jv3h0) z@zI~qNd{V-xsEU_x_vD4uRyJ78_uYg@Lt(P3n>Wlh`Fm66QkdYadh05sM~a~7yMM_ z>p;QtX)q8Qk8n=Mr0Q+s`1m6nnW{|9+sMOHs4dJU>2r_o7-4$U+cCh*(eyn)48n@c}Kf_H_(<8;D*gu~V!&@N1%K68%j z@DaFzF^QUZPd)9@a8WaY(>QkuH>U7N0Dwh;1 zJsR!mh;SCbjCevrMr-~z*xCCWL19iOC+lhrlffNU$SygQ@OeuDFM~H55*B_5@+C~xXW*BOJB*Vix!R-pcK)lZ1aoAi(rE*CETYpGi zvTRzmTwqJ*gm0F`{O$W5rt38fml`;Gb`@cvGGFrzA=7h7(1q=Rc zGt(t(?G$7XMF@%p zDK&*^$@~pa4cp>NoYgZW7RZp|kgNn@j~b{}CmCDVx!fe9#^q2Gs-Qs;D>JD(3%-_9ZKLUGYOY_+yXUFxwf{R|cp zSw84kjxvUmWTCG*KkH+&*+#cMueMH;BtgY*YY}wZSc6Orl93_Jl+GEpZd#2eLS2oz zgxbO?7-S-1qcu4ntYPah1;I+DeIN{D>GnFP_6IDBvLtbgz;9c)>FzL();5ngnmy$nx(tsRR{@N+ZP4qkAf#Sv8p8xVF6qN{Dz?ef zapFieOyW=(4gy3GQ-H8m^GY4A zv&L`f2&3!w zdzhFU$V|9}TKJL(a_vc!tOy-`Z=R(fp(98A8D_L5)a(kYv`W|p4rWUN*wS#4nZayR zZh^2J>%HqKi{uUp^tIr(C?3>!7a29)Mx7lFa_9$RDIm;=!C|+K%0z?Q2us?*jP_X@ z6>b761QL!6t2G*vpbwvR^wymwn#Zi&;*5sn8vQ%MO!-*XFZj54R@sLmCL}jB4!b?c z@cWoqIT|eJx${dJ_06a$JB2}~iLbZz<#!);(5Mf{g-FJtK7pN$NFF?$LZs)|&E|!MeTKe*oz`X4`ZqCA ziX6mZJEn1l?I8z^r8!&;S26$EWfZE@?j&Kz>Llu-5q?GJZ$VDjJsL~{zm4f(b04_# z>^#=qdJ~OBLTwK;wQ5BxlNWS*=PttOM_Mj;qx`BBk2+iPhd&SXM!Su^Jj1~3I*}=R z9n^wtT`7Nysbb3-%S6cK)Xw{E-fXLWdUp|(nX9;PVU4<9Bda}+&WAEPyDS^qSFzQ6 zfz^cr3G8XYo+L;q>)p}>usCtZ)8zfE;xrYjL>?S*$o3@9=ZN7Eqa8{wPH_AF6z;yb zBp>|hZ7eMu#+h?(;n9Obbf4bD4_A(<&sjSam0U#~zgcm)6e1nd<>85F zSRyGS?+#;p{Etc8esT?$uf31;b*8gcJ3Z{#!xtmh>6tmKy#5P)^nktg$wxT9w5Kx@ z##M0MphrDA)8R~)6(`Ms?8T5m5o2=?`q{l1e6@KEYnMOJpZ)Y5%+Afha|eB#9`@{2 z2tyugR(SJ0`SObtFCY8`7nYyP>Ov0%8-0GzcY`c-5j%ymt&mZ&yY>5tY&;Kf^NU4% z+gg_&|Kyi=_uY5!+L<$M|NMw6_D$liqc@4XcPph$_V@Sk@ZrDp@z?(p^zY%~(sMo6 z=t#AivOU^vW85L$Fyb^#$1Ln33GFE8U(@kTSfc7 zUSYELCAI(akk`|logLZO*uds@4>jpOmy*BB*3q`76S3#;VM6{!p6s=!8S}EvFRaSi z+7EDXZB0oeI$9mUJN_QkekJ1n_0pE6sdT$t?C&>qd-tVmZSkCZ)Y4wBD<-vK<7uf> wlIhtwEH5>5v9Ta?^Yf@yDoTy`zwb`}0X_~K#llm^P5=M^07*qoM6N<$g4L?-Z2$lO diff --git a/doc/html/images/next.png b/doc/html/images/next.png deleted file mode 100755 index f3a1221df31c3c2ba4e3a72edad38c13703767b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 768 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 X%C#}xd7c(T00000NkvXXu0mjfzS&}$ diff --git a/doc/html/images/tip.png b/doc/html/images/tip.png deleted file mode 100755 index d96e9bd379b6bec4bc2ee736b9305a656c89c861..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3902 zcmV-E55e$>P)G`3_~1(L7mR zKUGhMx2k_t4S?);A}1*oHUJ=rm&W&Xv1bN{gfg+C01Hrn3Z#Ha1Sd7w%g@;#2(!`) z{w4250km?wr~B{E|HlxyNjxq95KhSP+^AHJkkf=5%T400)W=siGc8$IgB^uT=L;`T z$iXWd`Hd4-IOZGg{MzI1>mcMZ0C1$3uS__)!jWH@dTNC^vHTZ|9$8iKVVQ@W}MI#5CPF-v8*FmHqOK-dKIz2N0v;du_Au9k5>k zfRuc%sT~G@vKxSop6|8D;{bG)03iL8lg`ihRzs~UXg~lIKnF5F5vT%9pbLzE8L$Ml zzzMhmZ{QC?z(&9Uu^_dyc0+|wDO3g3 zK~2yv&^hQbbORcK9zqk)Ec7?@5k_DVOotU<4Oky$!*;L-><@2%W8f4x3(kZ0!4+^l zdFT=Os5m*4fgclHi5D^BVjOZe4!~yX}LXl{Mk8DQ@kaDCRX+^q`e&ik^K<1DS zC=7~*Vxn|WmMB+L0E&Z3L2XABp{h_PQ5~p0)IHP$Y993kO-9S3b%!WGkd&>UQzHAb&4HjBPEMcPB}}tLzxrDi))BGh)0NT7q1pSCq5>=AVHHbl<<~Fk|>gB zmbf7?L&Z`xs7_QaHII6XdWAYkLujfr2O5XAo7OUc z8cPOBZjr2(ydWuHAPfzL8zYfX%s9gsWqg!Ukg}7ClG-cPDm5&%C@m*#D;*_WAl)WC zBK=W@DdQxQAhTblQ|5^*N>*FeM>bRTi0oC_IXSwVr5s1DK<oxCdVYJv<30jA>?rOu@Cfc#u)!KJ- zU>#GPIGw{fL#xoM%vbSN)vp@UCF$DfX6Ux)PUtc8JoR$*I`v-ZtLca8@7M3w|6*Wb zkZ90g@Ys-Q=x&&6*lqZ?k+u=XsM_fMYVvC5)jL*qt$uB+V;p6C#Q1>;&BV)Ok4dk| zXHzp%zGo9{3`Z~no;)FRE|jKyD;x|Ru+&6YE3 zSZkuzG_0AlQn8A#sTRCcs@igG8*QiUwCv*TPT9S(H?Zg1 zx7#l|SU7BRxa5d9x;Pd%4mwet0-UOxo;s^I$2hk*&%2noWV>8)MZ0>q?spw?Q*h(B zHMz~Zo4Idu@ADve_<2-$JoD7{5|!CvlO2fW7Ds;}j(?eqrTZr%sHpR8l8OIi1u z55{MmPqoi;Uqjy<-+n)u-zL9izjyxj{>A=}12hBD19}4~fnkA7fr~+oL8U>0VEy22 z!M8$WL*hcZLb0KNp^c#n>z&pgTt5|N5|$q}x`DM}%Z3{pWj7{nys(L~DPq&vaCCT3 zcysut2=9pch=oYE$ePG`jsxcq=Ox#cTgIJ@vWhB=nvS-LE{&dvv5GkmGaG9YTOKW;h}Q#)ODp4>&)m9Xn}u0d{T?%Ul#ySwug@^KYwhG<(}FfQ9s80IJkH9-pajS3b+L~3k?d(3qKWcif;a7_*2DC%lo4D z4HlagA1T3<@JdGa+w4DCDp8tMI(fkBKt~y~tf1`e!A%EmlpB}V9wHn{KP0H|tmvv# zt1PMfR25q_Qf*(|RwG}tw`TD$_weu$+as;D3blo`ACJZzeNg98*HN!gUw#a8EaTYo zhQNmYd-uiq7gH~jUoOq%|0(fj z%`44Uzy4+W*T8)6{M2jy>*c?T-pIT;@z(fl@4~u;r|**9EiD$jmwA8k1N%e&$DohX zOPQarpDI3UeeV9^@nw8DX?a=X0wNa>xq!$8L@pq50g(%cTtMUkA{P+3fXD?zE+BFN zkqi7EyTI3fH^Lw*%ds&4{Idb@ybVBQ6#yF108qmI0k~xYKq6_U3IG5AAbM0-bYXRL zXm4@=0C?K-O)SYwELLz%EJ)2sEh)(d05UBGAqthp4*&oKOi4sRR7l6QR$FfyRS^E> zob}qVleiAeg(RlxjotuJK}A&|R3YvUl|Yq{c;XHI1c-mZzu*-KA*!MZT8Xx*DrnQD zNtJ}gX`IB3Z@b>hFnh7HiCxEi;3Ttqyt`*+&dm4C8EUcfBY-zVln9GZd=Gy6@o#W6 z$nkA#ITdbr7G-n>W2rn$m0^ko5<0L)PkRLK>V{lSio7kNdm3gC%f(}t=W7q>QEdV9 zwM8zsDpW8J;Pl8boIP-s$J3KymV(uT7~VFp&j^fKULChKZ{oM|HEcT7SRYVpHc+zG zux6F<>C{I!n4UmjJl=WV(GG8Kkv~uVZddN`&+AuNjK=RM7O*4l@73mcxv|2Y#HFvk zgs6DyJw@zN&E2M(mAlmNn(~Yjvh$tmd$istk?T6tPhV1u9^SNb!#;dotS@1+wHZ9% zoz!){3#WmHmc1=syL;Ys>Fqo>;&7{8s1_8X>eR{h?7)o#Xu>dupbNgSYE8~&Go+P{ z64d^VI^e<{a4923oS!h*zC)4nXND$dG&KUtwwR+3$2*}=t-Wnw@%B9bRH)HdwuqU+ z43C)wGKFds_!h0$i)vqg_rv#J%jA`WXOsXQhIKB?^RiWvP_}bRVT9}DD$QO0hvsh0 zp11{;2pde^tE1 zuht9v_wRr4{hM>VUfN*K_t?m$1OXn`YgOJTm!+!J`H}T6-`=>xj_15ModOAlQi@C? zLsNyL^xo+Y>Bz)XR3Nn?N@>z*Q>f&U)oe;`4I0koNN`4r&mL2wwbezxKokZY;-@db zURi&N`Q??UmImQdkqTE*p(TJ5(-RmS9!17aqu!{(c4}Q*3PxWZ_uwR|O$VDoA0fH8 zt-{Utp72tqaroFV49|?PXZuifDacz@P8)fqh<;r>PKE%x?jadCfeNNnijYYuG+KVh z+XG{HjL(eY~ z;k84D@#ljFNaxac_u@O4Jv1ATK7clwWeZCy%P6>6e0JswWX&w-IiY^8(N@!j-Lz!B z^L#v4#0Rfm#6r0QmCwPDU2ktZgYCAkQQ5-UlM*KND8Bvt8_d2`6db5M8{Q|!z9-DI zY;GGBAcZs2$l{YXFLTXq;+K0@aO1{xiG^nPF2+rb_dDEEAy$r1kj@NbNn4|-_ zB9ja4Mj+@if{Wc~D%)y>rIfJKS;Wy`TWa{?+I_56*5G(GPD!Pj94+8rF3;Dl{z}C| zr*ZN9OPn$@!Z{kO5nx}=CC}gSGZCqF1 zaBjognI@Fpf34BWXy|#y6k7Rk?A9*DS{pD71CG;*5UiC{D3RbU&KhP4@ox7u-1Bsj zlZS?KLzI!Qb+8d8E>dc8x}!PHXFDZ3lLUPRI-SCG;lB>Hi2q~!2P5g%Wv38#EC2ui M07*qoM6N<$f+3!SJpcdz diff --git a/doc/html/images/up.png b/doc/html/images/up.png deleted file mode 100755 index ef434074cab1625251ba558c14e5bf47c5add70b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 766 zcmVi2l61ZmBBd7zG_!dDwS8|O1VgZ%x+}|^58`>G(J+67#m>gLPq@CZy4^I>)*rR0@SF;mmm^Tgnm~(d+d_$x#1KKbcP=9AaOyBRpbUHjc50 zH~IE_Y?);%Y~(0X_*4+L#Z*4k@Am-!(DB8w)~Cg@xLGixt0=-F#wDX6YS43f$A%+V z3bJK3TnTeW9AD+7nzWc&th}$tvJ6dGrr<>wdow zcb1Fq$JeB_oRl-p8_z$VLj|d@zPB#s#rg2Ofi_qZRy2lMMJu^O28w}^6i-DmM!F)d z^kzDLnBOdJUVgoV005(B)*E$%Mr@+Zp0>Mp+R}L^4HY zEPaBn)&8N}`1V~J3t|ho1#iLY-|`2x1MDu#?Q_wCs8AG0o^0R!RF)5q57Y`}p)4l1 w2_|6GYn6IVZCEg16gJDu(lPqs@%MB27j1Jeg^QMzvj6}907*qoM6N<$f|fXAwEzGB diff --git a/doc/html/images/warning.png b/doc/html/images/warning.png deleted file mode 100755 index 51a30f751179811a3367891c0e54b1dea7afd3ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3927 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 -Chapter 1. Boost.Config +Boost.Config - - + + - - - - - - + + + + + +
Boost C++ LibrariesHomeLibrariesPeopleFAQMoreBoost C++ LibrariesHomeLibrariesPeopleFAQMore

-
Next
-
-
+
Next
+
+
+

-Chapter 1. Boost.Config

-

+Boost.Config

+

Vesa Karvonen, John Maddock Beman Dawes -

+
-

+

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

-
+
+
+

Table of Contents

@@ -87,10 +90,8 @@

Boost comes already configured for most common compilers and platforms; you should be able to use boost "as is". Since the compiler is configured @@ -132,10 +131,8 @@

Boost library implementations access configuration macros via

@@ -167,13 +164,11 @@

- +
[Note][Note] Note
@@ -325,10 +320,8 @@

There are some configuration-options that represent user choices, rather than compiler defects or platform specific options. These are listed in @@ -690,10 +683,8 @@

Lets suppose that we're building boost with Visual C++ 6, and STLport 4.0. Lets suppose also that we don't intend to update our compiler or standard @@ -769,10 +758,8 @@

Lets suppose that you're using boost with a compiler that is fully conformant with the standard; you're not interested in the fact that older versions @@ -789,10 +776,8 @@

If you are working on a unix-like platform then you can use the configure script to generate a "frozen" configuration based on your current @@ -803,10 +788,8 @@

The boost configuration library provides a full set of regression test programs under the <boost-root>/boost/config/ @@ -974,10 +957,10 @@

- +

Last revised: May 30, 2007 at 04:42:31 GMT

Last revised: June 06, 2007 at 11:36:53 GMT


-
Next
+
Next
diff --git a/index.html b/index.html index 77ec5480..df7430bd 100644 --- a/index.html +++ b/index.html @@ -1,10 +1,10 @@ - +

- Automatic redirection failed, please go to config.htm. + Automatic redirection failed, please go to doc/html/index.html.

Copyright John Maddock 2001

Distributed under the Boost Software License, Version 1.0. (See accompanying file @@ -12,3 +12,4 @@ + diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 9d48e7ce..3c5da533 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -334,3 +334,4 @@ test-suite "BOOST_NO_INTRINSIC_WCHAR_T" : [ compile-fail no_wchar_t_fail.cpp ] ; +