From 956b95a48fdbd654a3a03fc19c72b4202995ed12 Mon Sep 17 00:00:00 2001 From: Beman Dawes Date: Sat, 22 May 2010 12:54:57 +0000 Subject: [PATCH] Rebuild docs after changeset 62140 [SVN r62141] --- doc/html/boost_config/acknowledgements.html | 4 +- .../boost_config/boost_macro_reference.html | 3814 +++++++++-------- .../guidelines_for_boost_authors.html | 96 +- doc/html/boost_config/rationale.html | 8 +- doc/html/index.html | 654 +-- 5 files changed, 2376 insertions(+), 2200 deletions(-) diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index 347924f4..d49dfa64 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -3,7 +3,7 @@ Acknowledgements - + @@ -21,7 +21,7 @@
PrevUpHome
-
+
diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 81957ff3..c5c0d793 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3,7 +3,7 @@ Boost Macro Reference - + @@ -22,7 +22,7 @@
PrevUpHomeNext
-
+
@@ -44,7 +44,7 @@

-
+

Macros that describe defects @@ -62,240 +62,240 @@ -

- Macro -

+

+ Macro +

-

- Section -

+

+ Section +

-

- Description -

+

+ Description +

-

- BOOST_BCB_PARTIAL_SPECIALIZATION_BUG -

+

+ BOOST_BCB_PARTIAL_SPECIALIZATION_BUG +

-

- Compiler -

+

+ Compiler +

-

- The compiler exibits certain partial specialisation bug - probably - Borland C++ Builder specific. -

+

+ The compiler exibits certain partial specialisation bug - probably + Borland C++ Builder specific. +

-

- BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL -

+

+ BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL +

-

- Compiler -

+

+ Compiler +

-

- Argument 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. -

+

+ Argument 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_ADL_BARRIER -

+

+ BOOST_NO_ADL_BARRIER +

-

- Compiler -

+

+ Compiler +

-

- The compiler locates and searches namespaces that it should *not* - in fact search when performing argument dependent lookup. -

+

+ The compiler locates and searches namespaces that it should *not* + in fact search when performing argument dependent lookup. +

-

- BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP -

+

+ BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP +

-

- Compiler -

+

+ Compiler +

-

- Compiler does not implement argument-dependent lookup (also named - Koenig lookup); see std::3.4.2 [basic.koenig.lookup] -

+

+ Compiler does not implement argument-dependent lookup (also named + Koenig lookup); see std::3.4.2 [basic.koenig.lookup] +

-

- BOOST_NO_AUTO_PTR -

+

+ BOOST_NO_AUTO_PTR +

-

- Standard library -

+

+ Standard library +

-

- If the compiler / library supplies non-standard or broken std::auto_ptr. -

+

+ If the compiler / library supplies non-standard or broken std::auto_ptr. +

-

- BOOST_NO_COMPLETE_VALUE_INITIALIZATION -

+

+ BOOST_NO_COMPLETE_VALUE_INITIALIZATION +

-

- Compiler -

+

+ Compiler +

-

- Compiler has not completely implemented value-initialization. See - also The - Utility/Value Init docs -

+

+ Compiler has not completely implemented value-initialization. See + also The + Utility/Value Init docs +

-

- BOOST_NO_CTYPE_FUNCTIONS -

+

+ BOOST_NO_CTYPE_FUNCTIONS +

-

- Platform -

+

+ Platform +

-

- The Platform does not provide functions for the character-classifying - operations <ctype.h> and <cctype>, - only macros. -

+

+ The Platform does not provide functions for the character-classifying + operations <ctype.h> and <cctype>, + only macros. +

-

- BOOST_NO_CV_SPECIALIZATIONS -

+

+ BOOST_NO_CV_SPECIALIZATIONS +

-

- Compiler -

+

+ Compiler +

-

- If template specialisations for cv-qualified types conflict with - a specialisation for a cv-unqualififed type. -

+

+ If template specialisations for cv-qualified types conflict with + a specialisation for a cv-unqualififed type. +

-

- BOOST_NO_CV_VOID_SPECIALIZATIONS -

+

+ BOOST_NO_CV_VOID_SPECIALIZATIONS +

-

- Compiler -

+

+ Compiler +

-

- If template specialisations for cv-void types conflict with a specialisation - for void. -

+

+ If template specialisations for cv-void types conflict with a specialisation + for void. +

-

- BOOST_NO_CWCHAR -

+

+ BOOST_NO_CWCHAR +

-

- Platform -

+

+ Platform +

-

- The Platform does not provide <wchar.h> - and <cwchar>. -

+

+ The Platform does not provide <wchar.h> + and <cwchar>. +

-

- BOOST_NO_CWCTYPE -

+

+ BOOST_NO_CWCTYPE +

-

- Platform -

+

+ Platform +

-

- The Platform does not provide <wctype.h> - and <cwctype>. -

+

+ The Platform does not provide <wctype.h> + and <cwctype>. +

-

- BOOST_NO_DEPENDENT_NESTED_DERIVATIONS -

+

+ BOOST_NO_DEPENDENT_NESTED_DERIVATIONS +

-

- Compiler -

+

+ Compiler +

-

- The compiler fails to compile a nested class that has a dependent - base class: +

+ The compiler fails to compile a nested class that has a dependent + base class:

template<typename T>
 struct foo : {
@@ -303,106 +303,106 @@
    struct bar : public U {};
 

- }; -

+ }; +

-

- BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS -

+

+ BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS +

-

- Compiler -

+

+ Compiler +

-

- Template value parameters cannot have a dependent type, for example: - +

+ Template value parameters cannot have a dependent type, for example: +

template<class T, typename T::type value> 
 class X { ... };
 

-

+

-

- BOOST_NO_EXCEPTION_STD_NAMESPACE -

+

+ BOOST_NO_EXCEPTION_STD_NAMESPACE +

-

- Standard Library -

+

+ Standard Library +

-

- The standard library does not put some or all of the contents of - <exception> in namespace std. -

+

+ The standard library does not put some or all of the contents of + <exception> in namespace std. +

-

- BOOST_NO_EXCEPTIONS -

+

+ BOOST_NO_EXCEPTIONS +

-

- Compiler -

+

+ Compiler +

-

- The 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! -

+

+ The 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_ARGUMENTS -

+

+ BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS +

-

- Compiler -

+

+ Compiler +

-

- Can only use deduced template arguments when calling function template - instantiations. -

+

+ Can only use deduced template arguments when calling function template + instantiations. +

-

- BOOST_NO_FUNCTION_TEMPLATE_ORDERING -

+

+ BOOST_NO_FUNCTION_TEMPLATE_ORDERING +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not perform function template ordering or its function - template ordering is incorrect. +

+ The compiler does not perform function template ordering or its + function template ordering is incorrect.

// #1
 template<class T> void f(T);
@@ -415,876 +415,875 @@
 f(&bar); // should choose #2.
 

-

+

-

- BOOST_NO_INCLASS_MEMBER_INITIALIZATION -

+

+ BOOST_NO_INCLASS_MEMBER_INITIALIZATION +

-

- Compiler -

+

+ Compiler +

-

- Compiler violates std::9.4.2/4. -

+

+ Compiler violates std::9.4.2/4. +

-

- BOOST_NO_INTRINSIC_WCHAR_T -

+

+ BOOST_NO_INTRINSIC_WCHAR_T +

-

- Compiler -

+

+ Compiler +

-

- The 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. -

+

+ The 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_IOSFWD -

+

+ BOOST_NO_IOSFWD +

-

- std lib -

+

+ std lib +

-

- The standard library lacks <iosfwd>. -

+

+ The standard library lacks <iosfwd>. +

-

- BOOST_NO_IOSTREAM -

+

+ BOOST_NO_IOSTREAM +

-

- std lib -

+

+ std lib +

-

- The standard library lacks <iostream>, - <istream> or <ostream>. -

+

+ The standard library lacks <iostream>, + <istream> or <ostream>. +

-

- BOOST_NO_IS_ABSTRACT -

+

+ BOOST_NO_IS_ABSTRACT +

-

- Compiler -

+

+ Compiler +

-

- The 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. -

+

+ The 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_LIMITS -

+

+ BOOST_NO_LIMITS +

-

- Standard library -

+

+ Standard library +

-

- The 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. -

+

+ The 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_CONSTANTS -

+

+ BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS +

-

- Standard library -

+

+ Standard library +

-

- Constants such as numeric_limits<T>::is_signed - are not available for use at compile-time. -

+

+ Constants such as numeric_limits<T>::is_signed + are not available for use at compile-time. +

-

- BOOST_NO_LONG_LONG_NUMERIC_LIMITS -

+

+ BOOST_NO_LONG_LONG_NUMERIC_LIMITS +

-

- Standard library -

+

+ Standard library +

-

- There 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. -

+

+ There 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_SPECIALIZATIONS -

+

+ BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not support the specialization of individual member - functions of template classes. -

+

+ The compiler does not support the specialization of individual + member functions of template classes. +

-

- BOOST_NO_MEMBER_TEMPLATE_KEYWORD -

+

+ BOOST_NO_MEMBER_TEMPLATE_KEYWORD +

-

- Compiler -

+

+ Compiler +

-

- If the compiler supports member templates, but not the template keyword - when accessing member template classes. -

+

+ If the compiler supports member templates, but not the template + keyword when accessing member template classes. +

-

- BOOST_NO_MEMBER_TEMPLATE_FRIENDS -

+

+ BOOST_NO_MEMBER_TEMPLATE_FRIENDS +

-

- Compiler -

+

+ Compiler +

-

- Member template friend syntax (template<class - P> - friend class - frd;) - described in the C++ Standard, 14.5.3, not supported. -

+

+ Member template friend syntax (template<class + P> + friend class + frd;) + described in the C++ Standard, 14.5.3, not supported. +

-

- BOOST_NO_MEMBER_TEMPLATES -

+

+ BOOST_NO_MEMBER_TEMPLATES +

-

- Compiler -

+

+ Compiler +

-

- Member template functions not fully supported. -

+

+ Member template functions not fully supported. +

-

- BOOST_NO_MS_INT64_NUMERIC_LIMITS -

+

+ BOOST_NO_MS_INT64_NUMERIC_LIMITS +

-

- Standard library -

+

+ Standard library +

-

- There 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. -

+

+ There 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_NESTED_FRIENDSHIP -

+

+ BOOST_NO_NESTED_FRIENDSHIP +

-

- Compiler -

+

+ Compiler +

-

- Compiler doesn't allow a nested class to access private members of - its containing class. Probably Borland/CodeGear specific. -

+

+ Compiler doesn't allow a nested class to access private members + of its containing class. Probably Borland/CodeGear specific. +

-

- BOOST_NO_OPERATORS_IN_NAMESPACE -

+

+ BOOST_NO_OPERATORS_IN_NAMESPACE +

-

- Compiler -

+

+ Compiler +

-

- Compiler 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. -

+

+ Compiler 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_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS -

+

+ BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not correctly handle partial specializations which - depend upon default arguments in the primary template. -

+

+ The compiler does not correctly handle partial specializations + which depend upon default arguments in the primary template. +

-

- BOOST_NO_POINTER_TO_MEMBER_CONST -

+

+ BOOST_NO_POINTER_TO_MEMBER_CONST +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not correctly handle pointers to const member functions, - preventing use of these in overloaded function templates. See <boost/functional.hpp> - for example. -

+

+ The 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_PARAMETERS -

+

+ BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS +

-

- Compiler -

+

+ Compiler +

-

- Pointers to members don't work when used as template parameters. -

+

+ Pointers to members don't work when used as template parameters. +

-

- BOOST_NO_PRIVATE_IN_AGGREGATE -

+

+ BOOST_NO_PRIVATE_IN_AGGREGATE +

-

- Compiler -

+

+ Compiler +

-

- The compiler misreads 8.5.1, treating classes as non-aggregate if - they contain private or protected member functions. -

+

+ The compiler misreads 8.5.1, treating classes as non-aggregate + if they contain private or protected member functions. +

-

- BOOST_NO_RTTI -

+

+ BOOST_NO_RTTI +

-

- Compiler -

+

+ Compiler +

-

- The compiler may (or may not) have the typeid operator, but RTTI - on the dynamic type of an object is not supported. -

+

+ The compiler may (or may not) have the typeid operator, but RTTI + on the dynamic type of an object is not supported. +

-

- BOOST_NO_SFINAE -

+

+ BOOST_NO_SFINAE +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not support the "Substitution Failure Is Not - An Error" meta-programming idiom. -

+

+ The compiler does not support the "Substitution Failure Is + Not An Error" meta-programming idiom. +

-

- BOOST_NO_SFINAE_EXPR -

+

+ BOOST_NO_SFINAE_EXPR +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not support usage of SFINAE with arbitrary expressions. -

+

+ The compiler does not support usage of SFINAE with arbitrary expressions. +

-

- BOOST_NO_STD_ALLOCATOR -

+

+ BOOST_NO_STD_ALLOCATOR +

-

- Standard library -

+

+ Standard library +

-

- The C++ standard library does not provide a standards conforming - std::allocator. -

+

+ The C++ standard library does not provide a standards conforming + std::allocator. +

-

- BOOST_NO_STD_DISTANCE -

+

+ BOOST_NO_STD_DISTANCE +

-

- Standard library -

+

+ Standard library +

-

- The platform does not have a conforming version of std::distance. -

+

+ The platform does not have a conforming version of std::distance. +

-

- BOOST_NO_STD_ITERATOR -

+

+ BOOST_NO_STD_ITERATOR +

-

- Standard library -

+

+ Standard library +

-

- The C++ implementation fails to provide the std::iterator - class. -

+

+ The C++ implementation fails to provide the std::iterator + class. +

-

- BOOST_NO_STD_ITERATOR_TRAITS -

+

+ BOOST_NO_STD_ITERATOR_TRAITS +

-

- Standard library -

+

+ Standard library +

-

- The compiler does not provide a standard compliant implementation - of std::iterator_traits. Note that the - compiler may still have a non-standard implementation. -

+

+ The 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_LOCALE -

+

+ BOOST_NO_STD_LOCALE +

-

- Standard library -

+

+ Standard library +

-

- The standard library lacks std::locale. -

+

+ The standard library lacks std::locale. +

-

- BOOST_NO_STD_MESSAGES -

+

+ BOOST_NO_STD_MESSAGES +

-

- Standard library -

+

+ Standard library +

-

- The standard library lacks a conforming std::messages - facet. -

+

+ The standard library lacks a conforming std::messages + facet. +

-

- BOOST_NO_STD_MIN_MAX -

+

+ BOOST_NO_STD_MIN_MAX +

-

- Standard library -

+

+ Standard library +

-

- The C++ standard library does not provide the min() and max() template functions that should - be in <algorithm>. -

+

+ The C++ standard library does not provide the min() and max() template functions that should + be in <algorithm>. +

-

- BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN -

+

+ BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN +

-

- Standard library -

+

+ Standard library +

-

- Defined if the standard library's output iterators are not assignable. -

+

+ Defined if the standard library's output iterators are not assignable. +

-

- BOOST_NO_STD_TYPEINFO -

+

+ BOOST_NO_STD_TYPEINFO +

-

- Standard library -

+

+ Standard library +

-

- The <typeinfo> header declares type_info - in the global namespace instead of namespace std. -

+

+ The <typeinfo> header declares type_info + in the global namespace instead of namespace std. +

-

- BOOST_NO_STD_USE_FACET -

+

+ BOOST_NO_STD_USE_FACET +

-

- Standard library -

+

+ Standard library +

-

- The standard library lacks a conforming std::use_facet. -

+

+ The standard library lacks a conforming std::use_facet. +

-

- BOOST_NO_STD_WSTREAMBUF -

+

+ BOOST_NO_STD_WSTREAMBUF +

-

- Standard library -

+

+ Standard library +

-

- The standard library's implementation of std::basic_streambuf<wchar_t> is either missing, incomplete, - or buggy. -

+

+ The standard library's implementation of std::basic_streambuf<wchar_t> is either missing, incomplete, + or buggy. +

-

- BOOST_NO_STD_WSTRING -

+

+ BOOST_NO_STD_WSTRING +

-

- Standard library -

+

+ Standard library +

-

- The standard library lacks std::wstring. -

+

+ The standard library lacks std::wstring. +

-

- BOOST_NO_STDC_NAMESPACE -

+

+ BOOST_NO_STDC_NAMESPACE +

-

- Compiler, Platform -

+

+ Compiler, Platform +

-

- The 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... -

+

+ The 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_STRINGSTREAM -

+

+ BOOST_NO_STRINGSTREAM +

-

- Standard library -

+

+ Standard library +

-

- The C++ implementation does not provide the <sstream> - header. -

+

+ The C++ implementation does not provide the <sstream> + header. +

-

- BOOST_NO_SWPRINTF -

+

+ BOOST_NO_SWPRINTF +

-

- Platform -

+

+ Platform +

-

- The platform does not have a conforming version of swprintf. -

+

+ The platform does not have a conforming version of swprintf. +

-

- BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -

+

+ BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION +

-

- Compiler -

+

+ Compiler +

-

- Class template partial specialization (14.5.4 [temp.class.spec]) - not supported. -

+

+ Class template partial specialization (14.5.4 [temp.class.spec]) + not supported. +

-

- BOOST_NO_TEMPLATED_IOSTREAMS -

+

+ BOOST_NO_TEMPLATED_IOSTREAMS +

-

- Standard library -

+

+ Standard library +

-

- The standard library does not provide templated iostream classes. -

+

+ The standard library does not provide templated iostream classes. +

-

- BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS -

+

+ BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS +

-

- Standard library -

+

+ Standard library +

-

- The standard library does not provide templated iterator constructors - for its containers. -

+

+ The standard library does not provide templated iterator constructors + for its containers. +

-

- BOOST_NO_TEMPLATE_TEMPLATES -

+

+ BOOST_NO_TEMPLATE_TEMPLATES +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not support template template parameters. -

+

+ The compiler does not support template template parameters. +

-

- BOOST_NO_TYPEID -

+

+ BOOST_NO_TYPEID +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not support the typeid operator at all. -

+

+ The compiler does not support the typeid operator at all. +

-

- BOOST_NO_TYPENAME_WITH_CTOR -

+

+ BOOST_NO_TYPENAME_WITH_CTOR +

-

- Compiler -

+

+ Compiler +

-

- The typename keyword cannot be used when creating a temporary of - a Dependent type. -

+

+ The typename keyword cannot be used when creating a temporary of + a Dependent type. +

-

- BOOST_NO_UNREACHABLE_RETURN_DETECTION -

+

+ BOOST_NO_UNREACHABLE_RETURN_DETECTION +

-

- Compiler -

+

+ Compiler +

-

- If 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. -

+

+ If 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_BASE -

+

+ BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE +

-

- Compiler -

+

+ Compiler +

-

- The 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. -

+

+ The 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_TEMPLATE -

+

+ BOOST_NO_USING_TEMPLATE +

-

- Compiler -

+

+ Compiler +

-

- The 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). -

+

+ The 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_RETURNS -

+

+ BOOST_NO_VOID_RETURNS +

-

- Compiler -

+

+ Compiler +

-

- The compiler does not allow a void function to return the result - of calling another void function. +

+ The compiler does not allow a void function to return the result + of calling another void function.

void f() {}
 void g() { return f(); }
 

-

+

@@ -1292,7 +1291,7 @@

-
+

Macros that describe optional features @@ -1309,898 +1308,882 @@ -

- Macro -

+

+ Macro +

-

- Section -

+

+ Section +

-

- Description -

+

+ Description +

-

- BOOST_HAS_BETHREADS -

+

+ BOOST_HAS_BETHREADS +

-

- Platform -

+

+ Platform +

-

- The platform supports BeOS style threads. -

+

+ The platform supports BeOS style threads. +

-

- BOOST_HAS_CLOCK_GETTIME -

+

+ BOOST_HAS_CLOCK_GETTIME +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX API clock_gettime. -

+

+ The platform has the POSIX API clock_gettime. +

-

- BOOST_HAS_DECLSPEC -

+

+ BOOST_HAS_DIRENT_H +

-

- Compiler -

+

+ Platform +

-

- The compiler uses __declspec(dllexport) and __declspec(dllimport) to export/import symbols from dll's. -

+

+ The platform has the POSIX header <dirent.h>. +

-

- BOOST_HAS_DIRENT_H -

+

+ BOOST_HAS_EXPM1 +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX header <dirent.h>. -

+

+ The platform has the functions expm1, + expm1f and expm1l in <math.h> +

-

- BOOST_HAS_EXPM1 -

+

+ BOOST_HAS_FTIME +

-

- Platform -

+

+ Platform +

-

- The platform has the functions expm1, - expm1f and expm1l in <math.h> -

+

+ The platform has the Win32 API GetSystemTimeAsFileTime. +

-

- BOOST_HAS_FTIME -

+

+ BOOST_HAS_GETTIMEOFDAY +

-

- Platform -

+

+ Platform +

-

- The platform has the Win32 API GetSystemTimeAsFileTime. -

+

+ The platform has the POSIX API gettimeofday. +

-

- BOOST_HAS_GETTIMEOFDAY -

+

+ BOOST_HAS_HASH +

-

- Platform -

+

+ Standard library +

-

- The platform has the POSIX API gettimeofday. -

+

+ The 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_HASH -

+

+ BOOST_HAS_LOG1P +

-

- Standard library -

+

+ Platform +

-

- The 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. -

+

+ The platform has the functions log1p, + log1pf and log1pl in <math.h>. +

-

- BOOST_HAS_LOG1P -

+

+ BOOST_HAS_MACRO_USE_FACET +

-

- Platform -

+

+ Standard library +

-

- The platform has the functions log1p, - log1pf and log1pl in <math.h>. -

+

+ The 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_MACRO_USE_FACET -

+

+ BOOST_HAS_MS_INT64 +

-

- Standard library -

+

+ Compiler +

-

- The 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. -

+

+ The compiler supports the __int64 + data type. +

-

- BOOST_HAS_MS_INT64 -

+

+ BOOST_HAS_NANOSLEEP +

-

- Compiler -

+

+ Platform +

-

- The compiler supports the __int64 - data type. -

+

+ The platform has the POSIX API nanosleep. +

-

- BOOST_HAS_NANOSLEEP -

+

+ BOOST_HAS_NL_TYPES_H +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX API nanosleep. -

+

+ The platform has an <nl_types.h>. +

-

- BOOST_HAS_NL_TYPES_H -

+

+ BOOST_HAS_NRVO +

-

- Platform -

+

+ Compiler +

-

- The platform has an <nl_types.h>. -

+

+ Indicated 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_NRVO -

+

+ BOOST_HAS_PARTIAL_STD_ALLOCATOR +

-

- Compiler -

+

+ Standard Library +

-

- Indicated 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. -

+

+ The standard library has a partially conforming std::allocator + class, but without any of the member templates. +

-

- BOOST_HAS_PARTIAL_STD_ALLOCATOR -

+

+ BOOST_HAS_PTHREAD_DELAY_NP +

-

- Standard Library -

+

+ Platform +

-

- The standard library has a partially conforming std::allocator - class, but without any of the member templates. -

+

+ The platform has the POSIX API pthread_delay_np. +

-

- BOOST_HAS_PTHREAD_DELAY_NP -

+

+ BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX API pthread_delay_np. -

+

+ The platform has the POSIX API pthread_mutexattr_settype. +

-

- BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE -

+

+ BOOST_HAS_PTHREAD_YIELD +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX API pthread_mutexattr_settype. -

+

+ The platform has the POSIX API pthread_yield. +

-

- BOOST_HAS_PTHREAD_YIELD -

+

+ BOOST_HAS_PTHREADS +

-

- Platform -

+

+ Platform +

-

- The platform has the POSIX API pthread_yield. -

+

+ The platform support POSIX style threads. +

-

- BOOST_HAS_PTHREADS -

+

+ BOOST_HAS_SCHED_YIELD +

-

- Platform -

+

+ Platform +

-

- The platform support POSIX style threads. -

+

+ The platform has the POSIX API sched_yield. +

-

- BOOST_HAS_SCHED_YIELD -

+

+ BOOST_HAS_SGI_TYPE_TRAITS +

-

- Platform -

+

+ Compiler, Standard library +

-

- The platform has the POSIX API sched_yield. -

+

+ The compiler has native support for SGI style type traits. +

-

- BOOST_HAS_SGI_TYPE_TRAITS -

+

+ BOOST_HAS_STDINT_H +

-

- Compiler, Standard library -

+

+ Platform +

-

- The compiler has native support for SGI style type traits. -

+

+ The platform has a <stdint.h> +

-

- BOOST_HAS_STDINT_H -

+

+ BOOST_HAS_SLIST +

-

- Platform -

+

+ Standard library +

-

- The platform has a <stdint.h> -

+

+ The 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_SLIST -

+

+ BOOST_HAS_STLP_USE_FACET +

-

- Standard library -

+

+ Standard library +

-

- The 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. -

+

+ The 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_STLP_USE_FACET -

+

+ BOOST_HAS_TR1_ARRAY +

-

- Standard library -

+

+ Standard library +

-

- The 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. -

+

+ The library has a TR1 conforming version of <array>. +

-

- BOOST_HAS_TR1_ARRAY -

+

+ BOOST_HAS_TR1_COMPLEX_OVERLOADS +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <array>. -

+

+ The library has a version of <complex> + that supports passing scalars to the complex number algorithms. +

-

- BOOST_HAS_TR1_COMPLEX_OVERLOADS -

+

+ BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG +

-

- Standard library -

+

+ Standard library +

-

- The library has a version of <complex> - that supports passing scalars to the complex number algorithms. -

+

+ The library has a version of <complex> + that includes the new inverse trig functions from TR1. +

-

- BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG -

+

+ BOOST_HAS_TR1_REFERENCE_WRAPPER +

-

- Standard library -

+

+ Standard library +

-

- The library has a version of <complex> - that includes the new inverse trig functions from TR1. -

+

+ The library has TR1 conforming reference wrappers in <functional>. +

-

- BOOST_HAS_TR1_REFERENCE_WRAPPER -

+

+ BOOST_HAS_TR1_RESULT_OF +

-

- Standard library -

+

+ Standard library +

-

- The library has TR1 conforming reference wrappers in <functional>. -

+

+ The library has a TR1 conforming result_of template in <functional>. +

-

- BOOST_HAS_TR1_RESULT_OF -

+

+ BOOST_HAS_TR1_MEM_FN +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming result_of template in <functional>. -

+

+ The library has a TR1 conforming mem_fn function template in <functional>. +

-

- BOOST_HAS_TR1_MEM_FN -

+

+ BOOST_HAS_TR1_BIND +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming mem_fn function template in <functional>. -

+

+ The library has a TR1 conforming bind function template in <functional>. +

-

- BOOST_HAS_TR1_BIND -

+

+ BOOST_HAS_TR1_FUNCTION +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming bind function template in <functional>. -

+

+ The library has a TR1 conforming function class template in <functional>. +

-

- BOOST_HAS_TR1_FUNCTION -

+

+ BOOST_HAS_TR1_HASH +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming function class template in <functional>. -

+

+ The library has a TR1 conforming hash function template in <functional>. +

-

- BOOST_HAS_TR1_HASH -

+

+ BOOST_HAS_TR1_SHARED_PTR +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming hash function template in <functional>. -

+

+ The library has a TR1 conforming shared_ptr + class template in <memory>. +

-

- BOOST_HAS_TR1_SHARED_PTR -

+

+ BOOST_HAS_TR1_RANDOM +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming shared_ptr - class template in <memory>. -

+

+ The library has a TR1 conforming version of <random>. +

-

- BOOST_HAS_TR1_RANDOM -

+

+ BOOST_HAS_TR1_REGEX +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <random>. -

+

+ The library has a TR1 conforming version of <regex>. +

-

- BOOST_HAS_TR1_REGEX -

+

+ BOOST_HAS_TR1_TUPLE +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <regex>. -

+

+ The library has a TR1 conforming version of <tuple>. +

-

- BOOST_HAS_TR1_TUPLE -

+

+ BOOST_HAS_TR1_TYPE_TRAITS +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <tuple>. -

+

+ The library has a TR1 conforming version of <type_traits>. +

-

- BOOST_HAS_TR1_TYPE_TRAITS -

+

+ BOOST_HAS_TR1_UTILITY +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <type_traits>. -

+

+ The library has the TR1 additions to <utility> + (tuple interface to std::pair). +

-

- BOOST_HAS_TR1_UTILITY -

+

+ BOOST_HAS_TR1_UNORDERED_MAP +

-

- Standard library -

+

+ Standard library +

-

- The library has the TR1 additions to <utility> - (tuple interface to std::pair). -

+

+ The library has a TR1 conforming version of <unordered_map>. +

-

- BOOST_HAS_TR1_UNORDERED_MAP -

+

+ BOOST_HAS_TR1_UNORDERED_SET +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <unordered_map>. -

+

+ The library has a TR1 conforming version of <unordered_set>. +

-

- BOOST_HAS_TR1_UNORDERED_SET -

+

+ BOOST_HAS_TR1 +

-

- Standard library -

+

+ Standard library +

-

- The library has a TR1 conforming version of <unordered_set>. -

+

+ Implies all the other BOOST_HAS_TR1_* macros should be set. +

-

- BOOST_HAS_TR1 -

+

+ BOOST_HAS_THREADS +

-

- Standard library -

+

+ Platform, Compiler +

-

- Implies all the other BOOST_HAS_TR1_* macros should be set. -

+

+ Defined if the compiler, in its current translation mode, supports + multiple threads of execution. +

-

- BOOST_HAS_THREADS -

+

+ BOOST_HAS_TWO_ARG_USE_FACET +

-

- Platform, Compiler -

+

+ Standard library +

-

- Defined if the compiler, in its current translation mode, supports - multiple threads of execution. -

+

+ The 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_TWO_ARG_USE_FACET -

+

+ BOOST_HAS_UNISTD_H +

-

- Standard library -

+

+ Platform +

-

- The 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. -

+

+ The Platform provides <unistd.h>. +

-

- BOOST_HAS_UNISTD_H -

+

+ BOOST_HAS_WINTHREADS +

-

- Platform -

+

+ Platform +

-

- The Platform provides <unistd.h>. -

+

+ The platform supports MS Windows style threads. +

-

- BOOST_HAS_WINTHREADS -

+

+ BOOST_MSVC_STD_ITERATOR +

-

- Platform -

+

+ Standard library +

-

- The platform supports MS Windows style threads. -

+

+ Microsoft's broken version of std::iterator + is being used. This implies that std::iterator + takes no more than two template parameters. +

-

- BOOST_MSVC_STD_ITERATOR -

+

+ BOOST_MSVC6_MEMBER_TEMPLATES +

-

- Standard library -

+

+ Compiler +

-

- Microsoft's broken version of std::iterator - is being used. This implies that std::iterator - takes no more than two template parameters. -

+

+ Microsoft 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_MSVC6_MEMBER_TEMPLATES -

+

+ BOOST_HAS_STDINT_H +

-

- Compiler -

+

+ Platform +

-

- Microsoft 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_H -

- - -

- Platform -

- - -

- There 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). -

+

+ There 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 possible C++0x features @@ -2217,31 +2200,31 @@ -

- Macro -

+

+ Macro +

-

- Description -

+

+ Description +

-

- BOOST_HAS_CONCEPTS -

+

+ BOOST_HAS_CONCEPTS +

-

- The compiler supports concepts. -

+

+ The compiler supports concepts. +

-
+

Macros that describe C++0x features not supported @@ -2257,582 +2240,584 @@ -

- Macro -

+

+ Macro +

-

- Description -

+

+ Description +

-

- BOOST_NO_0X_HDR_ARRAY -

+

+ BOOST_NO_0X_HDR_ARRAY +

-

- The standard library does not provide header <array>. -

+

+ The standard library does not provide header <array>. +

-

- BOOST_NO_0X_HDR_CHRONO -

+

+ BOOST_NO_0X_HDR_CHRONO +

-

- The standard library does not provide header <chrono>. -

+

+ The standard library does not provide header <chrono>. +

-

- BOOST_NO_0X_HDR_CODECVT -

+

+ BOOST_NO_0X_HDR_CODECVT +

-

- The standard library does not provide header <codecvt>. -

+

+ The standard library does not provide header <codecvt>. +

-

- BOOST_NO_0X_HDR_CONCEPTS -

+

+ BOOST_NO_0X_HDR_CONCEPTS +

-

- The standard library does not provide header <concepts>. -

+

+ The standard library does not provide header <concepts>. +

-

- BOOST_NO_0X_HDR_CONDITION_VARIABLE -

+

+ BOOST_NO_0X_HDR_CONDITION_VARIABLE +

-

- The standard library does not provide header <condition_variable>. -

+

+ The standard library does not provide header <condition_variable>. +

-

- BOOST_NO_0X_HDR_CONTAINER_CONCEPTS -

+

+ BOOST_NO_0X_HDR_CONTAINER_CONCEPTS +

-

- The standard library does not provide header <container_concepts>. -

+

+ The standard library does not provide header <container_concepts>. +

-

- BOOST_NO_0X_HDR_FORWARD_LIST -

+

+ BOOST_NO_0X_HDR_FORWARD_LIST +

-

- The standard library does not provide header <forward_list>. -

+

+ The standard library does not provide header <forward_list>. +

-

- BOOST_NO_0X_HDR_FUTURE -

+

+ BOOST_NO_0X_HDR_FUTURE +

-

- The standard library does not provide header <future>. -

+

+ The standard library does not provide header <future>. +

-

- BOOST_NO_0X_HDR_INITIALIZER_LIST -

+

+ BOOST_NO_0X_HDR_INITIALIZER_LIST +

-

- The standard library does not provide header <initializer_list>. -

+

+ The standard library does not provide header <initializer_list>. +

-

- BOOST_NO_0X_HDR_ITERATOR_CONCEPTS -

+

+ BOOST_NO_0X_HDR_ITERATOR_CONCEPTS +

-

- The standard library does not provide header <iterator_concepts>. -

+

+ The standard library does not provide header <iterator_concepts>. +

-

- BOOST_NO_0X_HDR_MEMORY_CONCEPTS -

+

+ BOOST_NO_0X_HDR_MEMORY_CONCEPTS +

-

- The standard library does not provide header <memory_concepts>. -

+

+ The standard library does not provide header <memory_concepts>. +

-

- BOOST_NO_0X_HDR_MUTEX -

+

+ BOOST_NO_0X_HDR_MUTEX +

-

- The standard library does not provide header <mutex>. -

+

+ The standard library does not provide header <mutex>. +

-

- BOOST_NO_0X_HDR_RANDOM -

+

+ BOOST_NO_0X_HDR_RANDOM +

-

- The standard library does not provide header <random>. -

+

+ The standard library does not provide header <random>. +

-

- BOOST_NO_0X_HDR_RATIO -

+

+ BOOST_NO_0X_HDR_RATIO +

-

- The standard library does not provide header <ratio>. -

+

+ The standard library does not provide header <ratio>. +

-

- BOOST_NO_0X_HDR_REGEX -

+

+ BOOST_NO_0X_HDR_REGEX +

-

- The standard library does not provide header <regex>. -

+

+ The standard library does not provide header <regex>. +

-

- BOOST_NO_0X_HDR_SYSTEM_ERROR -

+

+ BOOST_NO_0X_HDR_SYSTEM_ERROR +

-

- The standard library does not provide header <system_error>. -

+

+ The standard library does not provide header <system_error>. +

-

- BOOST_NO_0X_HDR_THREAD -

+

+ BOOST_NO_0X_HDR_THREAD +

-

- The standard library does not provide header <thread>. -

+

+ The standard library does not provide header <thread>. +

-

- BOOST_NO_0X_HDR_TUPLE -

+

+ BOOST_NO_0X_HDR_TUPLE +

-

- The standard library does not provide header <tuple>. -

+

+ The standard library does not provide header <tuple>. +

-

- BOOST_NO_0X_HDR_TYPE_TRAITS -

+

+ BOOST_NO_0X_HDR_TYPE_TRAITS +

-

- The standard library does not provide header <type_traits>. -

+

+ The standard library does not provide header <type_traits>. +

-

- BOOST_NO_0X_HDR_UNORDERED_MAP -

+

+ BOOST_NO_0X_HDR_UNORDERED_MAP +

-

- The standard library does not provide header <unordered_map>. -

+

+ The standard library does not provide header <unordered_map>. +

-

- BOOST_NO_0X_HDR_UNORDERED_SET -

+

+ BOOST_NO_0X_HDR_UNORDERED_SET +

-

- The standard library does not provide header <unordered_set>. -

+

+ The standard library does not provide header <unordered_set>. +

-

- BOOST_NO_AUTO_DECLARATIONS -

+

+ BOOST_NO_AUTO_DECLARATIONS +

-

- The compiler does not support type deduction for variables declared - with the auto keyword - (auto var - = ...;). -

+

+ The compiler does not support type deduction for variables declared + with the auto keyword + (auto var + = ...;). +

-

- BOOST_NO_AUTO_MULTIDECLARATIONS -

+

+ BOOST_NO_AUTO_MULTIDECLARATIONS +

-

- The compiler does not support type deduction for multiple variables - declared with the auto - keyword (auto var - = ..., - *ptr - = ...;). -

+

+ The compiler does not support type deduction for multiple variables + declared with the auto + keyword (auto var + = ..., + *ptr + = ...;). +

-

- BOOST_NO_CHAR16_T -

+

+ BOOST_NO_CHAR16_T +

-

- The compiler does not support type char16_t. -

+

+ The compiler does not support type char16_t. +

-

- BOOST_NO_CHAR32_T -

+

+ BOOST_NO_CHAR32_T +

-

- The compiler does not support type char32_t. -

+

+ The compiler does not support type char32_t. +

-

- BOOST_NO_CONCEPTS -

+

+ BOOST_NO_CONCEPTS +

-

- The compiler does not support Concepts. -

+

+ The compiler does not support Concepts. +

-

- BOOST_NO_TEMPLATE_ALIASES -

+

+ BOOST_NO_TEMPLATE_ALIASES +

-

- The compiler does not support template aliases. -

+

+ The compiler does not support template aliases. +

-

- BOOST_NO_CONSTEXPR -

+

+ BOOST_NO_CONSTEXPR +

-

- The compiler does not support constexpr. -

+

+ The compiler does not support constexpr. +

-

- BOOST_NO_DECLTYPE -

+

+ BOOST_NO_DECLTYPE +

-

- The compiler does not support decltype. -

+

+ The compiler does not support decltype. +

-

- BOOST_NO_DEFAULTED_FUNCTIONS -

+

+ BOOST_NO_DEFAULTED_FUNCTIONS +

-

- The compiler does not support defaulted (= - default) functions. -

+

+ The compiler does not support defaulted (= + default) functions. +

-

- BOOST_NO_DELETED_FUNCTIONS -

+

+ BOOST_NO_DELETED_FUNCTIONS +

-

- The compiler does not support deleted (= - delete) functions. -

+

+ The compiler does not support deleted (= + delete) functions. +

-

- BOOST_NO_EXPLICIT_CONVERSION_OPERATIONS -

+

+ BOOST_NO_EXPLICIT_CONVERSION_OPERATORS +

-

- The compiler does not support explicit conversion operators (explicit operator - T()). -

+

+ The compiler does not support explicit conversion operators (explicit operator + T()). +

-

- BOOST_NO_EXTERN_TEMPLATE -

+

+ BOOST_NO_EXTERN_TEMPLATE +

-

- The compiler does not support explicit instantiation declarations - for templates (explicit template). -

+

+ The compiler does not support explicit instantiation declarations + for templates (explicit + template). +

-

- BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS -

+

+ BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS +

-

- The compiler does not support default template arguments for function - templates. -

+

+ The compiler does not support default template arguments for function + templates. +

-

- BOOST_NO_INITIALIZER_LISTS -

+

+ BOOST_NO_INITIALIZER_LISTS +

-

- The C++ compiler does not support C++0x initializer lists. -

+

+ The C++ compiler does not support C++0x initializer lists. +

-

- BOOST_NO_LAMBDAS -

+

+ BOOST_NO_LAMBDAS +

-

- The compiler does not support Lambdas. -

+

+ The compiler does not support Lambdas. +

-

- BOOST_NO_LONG_LONG -

+

+ BOOST_NO_LONG_LONG +

-

- The compiler does not support long - long. -

+

+ The compiler does not support long + long. +

-

- BOOST_NO_NULLPTR -

+

+ BOOST_NO_NULLPTR +

-

- The compiler does not support 'nullptr'. -

+

+ The compiler does not support 'nullptr'. +

-

- BOOST_NO_RAW_LITERALS -

+

+ BOOST_NO_RAW_LITERALS +

-

- The compiler does not support raw string literals. -

+

+ The compiler does not support raw string literals. +

-

- BOOST_NO_RVALUE_REFERENCES -

+

+ BOOST_NO_RVALUE_REFERENCES +

-

- The compiler does not support r-value references. -

+

+ The compiler does not support r-value references. +

-

- BOOST_NO_SCOPED_ENUMS -

+

+ BOOST_NO_SCOPED_ENUMS +

-

- The compiler does not support scoped enumerations (enum class). -

+

+ The compiler does not support scoped enumerations (enum class). +

-

- BOOST_NO_STATIC_ASSERT -

+

+ BOOST_NO_STATIC_ASSERT +

-

- The compiler does not support static_assert. -

+

+ The compiler does not support static_assert. +

-

- BOOST_NO_STD_UNORDERD -

+

+ BOOST_NO_STD_UNORDERD +

-

- The standard library does not support <unordered_map> and <unordered_set>. -

+

+ The standard library does not support <unordered_map> and + <unordered_set>. +

-

- BOOST_NO_TEMPLATE_ALIASES -

+

+ BOOST_NO_TEMPLATE_ALIASES +

-

- The compiler does not support template aliases. -

+

+ The compiler does not support template aliases. +

-

- BOOST_NO_UNICODE_LITERALS -

+

+ BOOST_NO_UNICODE_LITERALS +

-

- The compiler does not support Unicode (u8, - u, U) literals. -

+

+ The compiler does not support Unicode (u8, + u, U) literals. +

-

- BOOST_NO_VARIADIC_TEMPLATES -

+

+ BOOST_NO_VARIADIC_TEMPLATES +

-

- The compiler does not support variadic templates. -

+

+ The compiler does not support variadic templates. +

@@ -2840,7 +2825,7 @@

-
+

Boost Helper Macros @@ -2856,33 +2841,33 @@ -

- Macro -

+

+ Macro +

-

- Description -

+

+ Description +

-

- BOOST_WORKAROUND -

+

+ BOOST_WORKAROUND +

-

- This macro is used where a compiler specific workaround is required - that is not otherwise described by one of the other Boost.Config - macros. To use the macro you must first +

+ This macro is used where a compiler specific workaround is required + that is not otherwise described by one of the other Boost.Config + macros. To use the macro you must first

#include <boost/detail/workaround.hpp>
 

- usage is then: + usage is then:

#if BOOST_WORKAROUND(MACRONAME, CONDITION)
    // workaround code goes here...
@@ -2891,157 +2876,157 @@
 #endif
 

- where MACRONAME is - a macro that usually describes the version number to be tested against, - and CONDITION is - a comparison operator followed by a value. For example BOOST_WORKAROUND(BOOST_INTEL, - <= 1010) would evaluate to 1 for Intel C++ 10.1 and earlier. -

-

- The macro can also be used with BOOST_TESTED_AT - if all current compiler versions exhibit the issue, but the issue - is expected to be fixed at some later point. -

-

- For example BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) would normally evaluate to 1 for all values of __BORLANDC__ - unless the macro BOOST_DETECT_OUTDATED_WORKAROUNDS - is defined, in which case evaluates to (__BORLANDC__ <= - 0x590). -

-

- Note: the ultimate source of documentation - for this macro is in boost/detail/workaround.hpp. -

+ where MACRONAME + is a macro that usually describes the version number to be tested + against, and CONDITION + is a comparison operator followed by a value. For example BOOST_WORKAROUND(BOOST_INTEL, + <= 1010) would evaluate to 1 for Intel C++ 10.1 and earlier. +

+

+ The macro can also be used with BOOST_TESTED_AT + if all current compiler versions exhibit the issue, but the issue + is expected to be fixed at some later point. +

+

+ For example BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590)) would normally evaluate to 1 for all values of __BORLANDC__ unless + the macro BOOST_DETECT_OUTDATED_WORKAROUNDS + is defined, in which case evaluates to (__BORLANDC__ <= + 0x590). +

+

+ Note: the ultimate source of documentation + for this macro is in boost/detail/workaround.hpp. +

-

- BOOST_DEDUCED_TYPENAME -

+

+ BOOST_DEDUCED_TYPENAME +

-

- Some 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); -

+

+ Some 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_HEADER -

+

+ BOOST_HASH_MAP_HEADER +

-

- The header to include to get the SGI hash_map - class. This macro is only available if BOOST_HAS_HASH - is defined. -

+

+ The header to include to get the SGI hash_map + class. This macro is only available if BOOST_HAS_HASH + is defined. +

-

- BOOST_HASH_SET_HEADER -

+

+ BOOST_HASH_SET_HEADER +

-

- The header to include to get the SGI hash_set - class. This macro is only available if BOOST_HAS_HASH - is defined. -

+

+ The header to include to get the SGI hash_set + class. This macro is only available if BOOST_HAS_HASH + is defined. +

-

- BOOST_SLIST_HEADER -

+

+ BOOST_SLIST_HEADER +

-

- The header to include to get the SGI slist - class. This macro is only available if BOOST_HAS_SLIST - is defined. -

+

+ The header to include to get the SGI slist + class. This macro is only available if BOOST_HAS_SLIST + is defined. +

-

- BOOST_STD_EXTENSION_NAMESPACE -

+

+ BOOST_STD_EXTENSION_NAMESPACE +

-

- The namespace used for std library extensions (hashtable classes - etc). -

+

+ The namespace used for std library extensions (hashtable classes + etc). +

-

- BOOST_STATIC_CONSTANT(Type, assignment) -

+

+ 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: +

+ 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: + use:

struct foo{
    BOOST_STATIC_CONSTANT(int, value = 2);
 };
 

-

+

-

- BOOST_UNREACHABLE_RETURN(result) -

+

+ 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. -

+

+ 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) -

+

+ 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: +

+ 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>
@@ -3062,10 +3047,10 @@
 }
 

- 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: + 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)) { ... }
@@ -3074,105 +3059,105 @@
 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. -

+ 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) -

+

+ 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. -

+

+ 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) -

+

+ 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. -

+

+ 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_TEMPLATE -

+

+ BOOST_NESTED_TEMPLATE +

-

- Member 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; -

+

+ Member 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) -

+

+ BOOST_STRINGIZE(X) +

-

- Converts the parameter X - to a string after macro replacement on X - has been performed. -

+

+ Converts the parameter X + to a string after macro replacement on X + has been performed. +

-

- BOOST_JOIN(X,Y) -

+

+ 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__. -

+

+ 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__. +

@@ -3180,7 +3165,7 @@

-
+

Boost Informational Macros @@ -3197,255 +3182,275 @@ -

- Macro -

+

+ Macro +

-

- Header -

+

+ Header +

-

- Description -

+

+ Description +

-

- BOOST_VERSION -

+

+ BOOST_VERSION +

-

- <boost/version.hpp> -

+

+ <boost/version.hpp> +

-

- Describes the boost version number in XYYYZZ 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. -

+

+ Describes the boost version number in XYYYZZ 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_NO_INT64_T +

-

- <boost/cstdint.hpp> <boost/stdint.h> -

+

+ <boost/cstdint.hpp> <boost/stdint.h> +

-

- Defined if there are no 64-bit integral types: int64_t, - uint64_t etc. -

+

+ Defined if there are no 64-bit integral types: int64_t, + uint64_t etc. +

-

- BOOST_NO_INTEGRAL_INT64_T -

+

+ BOOST_NO_INTEGRAL_INT64_T +

-

- <boost/cstdint.hpp> <boost/stdint.h> -

+

+ <boost/cstdint.hpp> <boost/stdint.h> +

-

- Defined if int64_t - as defined by <boost/cstdint.hpp> is not usable in integral constant - expressions. -

+

+ Defined if int64_t + as defined by <boost/cstdint.hpp> + is not usable in integral constant expressions. +

-

- BOOST_MSVC -

+

+ BOOST_MSVC +

-

- <boost/config.hpp> -

+

+ <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. Has the same value as - _MSC_VER. -

+

+ Defined if the compiler is really Microsoft Visual C++, as opposed + to one of the many other compilers that also define _MSC_VER. Has the same value + as _MSC_VER. +

-

- BOOST_MSVC_FULL_VER -

+

+ BOOST_MSVC_FULL_VER +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined to a normalised 9 digit version of _MSC_FULL_VER (which sometimes - only has 8 digits), the macro has the form VVMMPPPPP where VV is - the major version number, MM is the minor version number, and PPPPP - is the compiler build number. -

+

+ Defined to a normalised 9 digit version of _MSC_FULL_VER (which + sometimes only has 8 digits), the macro has the form VVMMPPPPP + where VV is the major version number, MM is the minor version number, + and PPPPP is the compiler build number. +

-

- BOOST_INTEL -

+

+ BOOST_INTEL +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined if the compiler is an Intel compiler, takes the same value - as the compiler version macro. -

+

+ Defined if the compiler is an Intel compiler, takes the same value + as the compiler version macro. +

-

- BOOST_WINDOWS -

+

+ BOOST_CLANG +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined if the Windows platfrom API is available. -

+

+ Defined to 1 if the compiler is the Clang compiler. +

-

- BOOST_DINKUMWARE_STDLIB -

+

+ BOOST_WINDOWS +

-

- <boost/config.hpp> -

+

+ <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. -

+

+ Defined if the Windows platfrom API is available. +

-

- BOOST_NO_WREGEX -

+

+ BOOST_DINKUMWARE_STDLIB +

-

- <boost/regex.hpp> -

+

+ <boost/config.hpp> +

-

- Defined if the regex library does not support wide character regular - expressions. -

+

+ 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_COMPILER -

+

+ BOOST_NO_WREGEX +

-

- <boost/config.hpp> -

+

+ <boost/regex.hpp> +

-

- Defined as a string describing the name and version number of the - compiler in use. Mainly for debugging the configuration. -

+

+ Defined if the regex library does not support wide character regular + expressions. +

-

- BOOST_STDLIB -

+

+ BOOST_COMPILER +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined as a string describing the name and version number of the - standard library in use. Mainly for debugging the configuration. -

+

+ Defined as a string describing the name and version number of the + compiler in use. Mainly for debugging the configuration. +

-

- BOOST_PLATFORM -

+

+ BOOST_STDLIB +

-

- <boost/config.hpp> -

+

+ <boost/config.hpp> +

-

- Defined as a string describing the name of the platform. Mainly for - debugging the configuration. -

+

+ 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. +

-
+

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. + include separate source code, and are intended to address several issues:

-
+
    +
  • + Controlling shared library symbol visibility +
  • +
  • + Fixing the ABI of the compiled library +
  • +
  • + Selecting which compiled library to link against based upon the compilers + settings +
  • +
+

+ See Guidelines + for Authors of Boost Libraries Containing Separate Source +

+
+ +

+ Some compilers support C++ extensions that control which symbols will be + exported from shared libraries such as dynamic shared objects (DSO's) on + Unix-like systems or dynamic-link libraries (DLL's) on Windows. +

+

+ The Microsoft VC++ compiler has long supplied __declspec(dllexport) and __declspec(dllimport) extensions for this purpose, as do virtually + all other compilers targeting the Windows platform. +

+

+ Modern versions of the GNU GCC compiler provide the __attribute__((visibility("default"))) extension to indicate that a symbol + should be exported. All other symbols may be hidden by using the -fvisibility-hidden + or -fvisibility-ms-compat compiler switches. +

+

+ Boost supplies several macros to make it easier to manage symbol visibility + in a way that is portable between compilers and operating systems. +

+
++++ + + + + + + + + + + + + + + + + + + + + + + +
+

+ Macro +

+
+

+ Description +

+
+

+ BOOST_SYMBOL_EXPORT +

+
+

+ Defines the syntax of a C++ language extension that indicates + a symbol is to be exported from a shared library. If the compiler + has no such extension, the macro is defined with no replacement + text. +

+
+

+ BOOST_SYMBOL_IMPORT +

+
+

+ Defines the syntax of a C++ language extension that indicates + a symbol is to be imported from a shared library. If the compiler + has no such extension, the macro is defined with no replacement + text. +

+
+

+ BOOST_SYMBOL_VISIBLE +

+
+

+ Defines the syntax of a C++ language extension that indicates + a symbol is to be globally visible. If the compiler has no such + extension, the macro is defined with no replacement text. Needed + for classes that are not otherwise exported, but are used by + RTTI. Examples include class for objects that will be thrown + as exceptions or used in dynamic_casts, across shared library + boundaries. For example, a header-only exception class might + look like this: +

+
class BOOST_SYMBOL_VISIBLE my_exception : public std::runtime_error { ... };
+
+

+ Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch + my_exception thrown from a shared library compiled by GCC with + the -fvisibility=hidden option. +

+
+

+ BOOST_HAS_DECLSPEC +

+
+

+ The compiler has C++ extensions __declspec(dllexport) and __declspec(dllimport) to control export/import of + symbols from shared libraries. Deprecated. This macro + is no longer necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT + are now supplied. It is provided to support legacy code. +

+
+

+ Typical usage: +

+

+ boost/foo/config.hpp +

+
...
+#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FOO_DYN_LINK)
+# if defined(BOOST_FOO_SOURCE)
+#   define BOOST_FOO_DECL BOOST_SYMBOL_EXPORT
+# else 
+#   define BOOST_FOO_DECL BOOST_SYMBOL_IMPORT
+# endif
+#else
+# define BOOST_FOO_DECL
+#endif
+...
+
+

+ boost/foo/foo.hpp +

+
#include <boost/foo/config.hpp>
+...
+class BOOST_FOO_DECL bar { ... };
+...
+void BOOST_FOO_DECL f();
+...
+
+

+ boost/libs/foo/src/foo.cpp +

+
#define BOOST_FOO_SOURCE
+#include <boost/foo/foo.hpp>    
+...
+void BOOST_FOO_DECL f()
+{
+  ...
+}
+...
+
+
+

ABI Fixing @@ -3515,7 +3689,7 @@ to point to their own prefix/suffix headers if they so wish.

-
+

Automatic library selection @@ -3545,18 +3719,18 @@
BOOST_LIB_NAME

- Required: An identifier containing the basename of the library, for - example 'boost_regex'. -

+ Required: An identifier containing the basename of the library, for + example 'boost_regex'. +

BOOST_DYN_LINK

- Optional: when set link to dll rather than static library. -

+ Optional: when set link to dll rather than static library. +

BOOST_LIB_DIAGNOSTIC

- Optional: when set the header will print out the name of the library - selected (useful for debugging). -

+ Optional: when set the header will print out the name of the library + selected (useful for debugging). +

diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index d3acebf8..98d1302b 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -3,7 +3,7 @@ Guidelines for Boost Authors - + @@ -22,7 +22,7 @@

PrevUpHomeNext
-
+

Guidelines for Boost Authors @@ -61,14 +61,14 @@

Note that:

-
    -
  • +
      +
    • Boost library implementers are not required to "#include <boost/config.hpp>", and are not required in any way to support compilers that do not comply with the C++ Standard (ISO/IEC 14882).
    • -
    • +
    • If a library implementer wishes to support some non-conforming compiler, or to support some platform specific feature, "#include <boost/config.hpp>" @@ -76,12 +76,12 @@ the standard headers such as <climits>, etc.
    • -
    • +
    • If configuration information can be deduced from standard headers such as <climits>, use those standard headers rather than <boost/config.hpp>.
    • -
    • +
    • Boost files that use macros defined in <boost/config.hpp> should have sensible, standard conforming, default behavior if the macro is not defined. This means that the starting point for porting <boost/config.hpp> @@ -89,21 +89,21 @@ In the rare case where there is no sensible default behavior, an #error message should describe the problem.
    • -
    • +
    • If a Boost library implementer wants something added to config.hpp, post a request on the Boost mailing list. There is no guarantee such a request will be honored; the intent is to limit the complexity of config.hpp.
    • -
    • +
    • The intent is to support only compilers which appear on their way to becoming C++ Standard compliant, and only recent releases of those compilers at that.
    • -
    • +
    • The intent is not to disable mainstream features now well-supported by the majority of compilers, such as namespaces, exceptions, RTTI, or templates.
    -
    +

    Disabling Compiler Warnings @@ -116,17 +116,17 @@

    Note that:

    -
      -
    • +
        +
      • This header should never be included by another Boost header, it should only ever be used by a library source file or a test case.
      • -
      • +
      • The header should be included before you include any other header.
      • -
      • +
      • This header only disables warnings that are hard or impossible to otherwise deal with, and which are typically emitted by one compiler only, or in one compilers own standard library headers. @@ -142,47 +142,47 @@ -

        - Compiler -

        +

        + Compiler +

        -

        - Warning -

        +

        + Warning +

        -

        - Visual C++ 8 and later -

        +

        + Visual C++ 8 and later +

        -

        - C4996: - Error 'function': was declared deprecated -

        +

        + C4996: + Error 'function': was declared deprecated +

        -

        - Intel C++ -

        +

        + Intel C++ +

        -

        - Warning 1786: relates to the use of "deprecated" standard - library functions rather like C4996 in Visual C++. -

        +

        + Warning 1786: relates to the use of "deprecated" standard + library functions rather like C4996 in Visual C++. +

    -
    +

    Adding New Defect Macros @@ -233,14 +233,14 @@ Once the test code is in place in libs/config/test, updating the configuration test system proceeds as:

    -
      -
    • +
        +
      • cd into libs/config/tools and run bjam. This generates the .cpp file test cases from the .ipp file, updates the libs/config/test/all/Jamfile.v2, config_test.cpp and config_info.cpp.

      • -
      • +
      • cd into libs/config/test/all and run bjam MACRONAME compiler-list, where MACRONAME is the name of the new macro, and @@ -251,7 +251,7 @@ If MACRONAME is defined when it should not be defined, xxx_fail_test will not report **passed**.

      • -
      • +
      • cd into libs/config/test and run bjam config_info config_test compiler-list. @@ -264,26 +264,26 @@

        Then you should:

        -
          -
        • +
            +
          • Define the defect macro in those config headers that require it.
          • -
          • +
          • Document the macro in this documentation (please do not forget this step!!)
          • -
          • +
          • Commit everything.
          • -
          • +
          • Keep an eye on the regression tests for new failures in Boost.Config caused by the addition.
          • -
          • +
          • Start using the macro.
        -
        +

        Adding New Feature Test Macros @@ -307,7 +307,7 @@ <unistd.h>).

        -
        +

        Modifying the Boost Configuration Headers diff --git a/doc/html/boost_config/rationale.html b/doc/html/boost_config/rationale.html index 59a53ec9..68cd4396 100644 --- a/doc/html/boost_config/rationale.html +++ b/doc/html/boost_config/rationale.html @@ -3,7 +3,7 @@ Rationale - + @@ -22,7 +22,7 @@
        PrevUpHomeNext
        -
        +
        @@ -39,7 +39,7 @@ principles from the following article.

        -
        +
        @@ -102,7 +102,7 @@ code must be provided.

        -
        +
        diff --git a/doc/html/index.html b/doc/html/index.html index 08ed6fef..df39f221 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -3,7 +3,7 @@ Boost.Config - + @@ -18,7 +18,7 @@
        Next
        -
        +

        @@ -28,7 +28,7 @@

        -

        +

        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)

        @@ -92,7 +92,7 @@
        Acknowledgements
        -
        +
        -
        +

        Using the default boost configuration @@ -135,7 +135,7 @@ and submitting a support request.

        -
        +

        The <boost/config.hpp> header @@ -168,7 +168,7 @@

        -
        +

        Using the configure script @@ -213,63 +213,63 @@ -

        - Variable -

        +

        + Variable +

        -

        - Description -

        +

        + Description +

        -

        - CXX -

        +

        + CXX +

        -

        - The name of the compiler, for example c++. -

        +

        + The name of the compiler, for example c++. +

        -

        - CXXFLAGS -

        +

        + CXXFLAGS +

        -

        - The compiler flags to use, for example -O2. -

        +

        + The compiler flags to use, for example -O2. +

        -

        - LDFLAGS -

        +

        + LDFLAGS +

        -

        - The linker flags to use, for example -L/mypath. -

        +

        + The linker flags to use, for example -L/mypath. +

        -

        - LIBS -

        +

        + LIBS +

        -

        - Any libraries to link in, for example -lpthread. -

        +

        + Any libraries to link in, for example -lpthread. +

        @@ -295,15 +295,15 @@ (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 <boost/config/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 @@ -318,7 +318,7 @@

          -
          +

          User settable options @@ -337,352 +337,354 @@ -

          - Macro -

          +

          + Macro +

          -

          - Description -

          +

          + Description +

          -

          - BOOST_USER_CONFIG -

          +

          + BOOST_USER_CONFIG +

          -

          - When 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>. -

          +

          + When 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_CONFIG -

          +

          + BOOST_COMPILER_CONFIG +

          -

          - When 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>. -

          +

          + When 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_CONFIG -

          +

          + BOOST_STDLIB_CONFIG +

          -

          - When 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>. -

          +

          + When 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_CONFIG -

          +

          + BOOST_PLATFORM_CONFIG +

          -

          - When 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>. -

          +

          + When 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_CONFIG -

          +

          + BOOST_NO_COMPILER_CONFIG +

          -

          - When 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. -

          +

          + When 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_CONFIG -

          +

          + BOOST_NO_STDLIB_CONFIG +

          -

          - When 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. -

          +

          + When 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_CONFIG -

          +

          + BOOST_NO_PLATFORM_CONFIG +

          -

          - When 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. -

          +

          + When 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_CONFIG -

          +

          + BOOST_NO_CONFIG +

          -

          - Equivalent to defining all of BOOST_NO_COMPILER_CONFIG, - BOOST_NO_STDLIB_CONFIG - and BOOST_NO_PLATFORM_CONFIG. -

          +

          + Equivalent to defining all of BOOST_NO_COMPILER_CONFIG, + BOOST_NO_STDLIB_CONFIG + and BOOST_NO_PLATFORM_CONFIG. +

          -

          - BOOST_STRICT_CONFIG -

          +

          + BOOST_STRICT_CONFIG +

          -

          - The 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. -

          +

          + The 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_CONFIG -

          +

          + BOOST_ASSERT_CONFIG +

          -

          - When 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. -

          +

          + When 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_THREADS -

          +

          + BOOST_DISABLE_THREADS +

          -

          - When defined, disables threading support, even if the compiler in - its current translation mode supports multiple threads. -

          +

          + When defined, disables threading support, even if the compiler + in its current translation mode supports multiple threads. +

          -

          - BOOST_DISABLE_WIN32 -

          +

          + BOOST_DISABLE_WIN32 +

          -

          - When 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". -

          +

          + When 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_HEADERS -

          +

          + BOOST_DISABLE_ABI_HEADERS +

          -

          - Stops boost headers from including any prefix/suffix headers that - normally control things like struct packing and alignment. -

          +

          + Stops boost headers from including any prefix/suffix headers that + normally control things like struct packing and alignment. +

          -

          - BOOST_ABI_PREFIX -

          +

          + BOOST_ABI_PREFIX +

          -

          - A 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. -

          +

          + A 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_SUFFIX -

          +

          + BOOST_ABI_SUFFIX +

          -

          - A suffix header to include in place of whatever boost.config would - normally select, any replacement should undo the effects of the prefix - header. -

          +

          + A 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 -

          +

          + 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. -

          +

          + 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 -

          +

          + 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. -

          +

          + 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 -

          +

          + 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. -

          +

          + 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 -

          +

          + 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. -

          +

          + 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_DIAGNOSTIC -

          +

          + BOOST_LIB_DIAGNOSTIC +

          -

          - Causes the auto-linking code to output diagnostic messages indicating - the name of the library that is selected for linking. -

          +

          + Causes the auto-linking code to output diagnostic messages indicating + the name of the library that is selected for linking. +

          -

          - BOOST_LIB_TOOLSET -

          +

          + BOOST_LIB_TOOLSET +

          -

          - Overrides 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". -

          +

          + Overrides 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 @@ -726,7 +728,7 @@

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

          -
          +

          Example 1, creating our own frozen configuration @@ -758,7 +760,7 @@ yet supported by boost.

          -
          +

          Example 2: skipping files that you don't need @@ -777,7 +779,7 @@ a dependency on two boost headers.

          -
          +
          -
          +

          Testing the boost configuration @@ -808,119 +810,119 @@ -

          - File -

          +

          + File +

          -

          - Description -

          +

          + Description +

          -

          - config_info.cpp -

          +

          + config_info.cpp +

          -

          - Prints 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. -

          +

          + Prints 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.cpp -

          +

          + config_test.cpp +

          -

          - A 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. -

          +

          + A 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.cpp -

          +

          + limits_test.cpp +

          -

          - Tests 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. -

          +

          + Tests 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.cpp -

          +

          + no_*pass.cpp +

          -

          - Individual 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. -

          +

          + Individual 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.cpp -

          +

          + no_*fail.cpp +

          -

          - Individual 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. -

          +

          + Individual 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.cpp -

          +

          + has_*pass.cpp +

          -

          - Individual 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. -

          +

          + Individual 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.cpp -

          +

          + has_*fail.cpp +

          -

          - Individual 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. -

          +

          + Individual 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. +

          @@ -960,7 +962,7 @@

          - +

          Last revised: April 09, 2010 at 12:33:49 GMT

          Last revised: May 22, 2010 at 12:50:36 GMT