diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html index 46aa889b..39e85051 100644 --- a/doc/html/boost_config/acknowledgements.html +++ b/doc/html/boost_config/acknowledgements.html @@ -11,7 +11,7 @@ - + diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 5b2d621d..916fe7a5 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -12,7 +12,7 @@
Boost C++ LibrariesHomeHome Libraries People FAQ
- + @@ -119,7 +119,7 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
Boost C++ LibrariesHomeHome Libraries People FAQ

- BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP + BOOST_NO_ADL_BARRIER

@@ -129,243 +129,60 @@

- Compiler does not implement argument-dependent lookup (also named - Koenig lookup); see std::3.4.2 [basic.koenig.lookup] + The compiler locates and searches namespaces that it should *not* + in fact search when performing argument dependent lookup.

-

- BOOST_NO_AUTO_PTR -

-
-

- Standard library -

-
-

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

-
-

- BOOST_NO_CTYPE_FUNCTIONS -

-
-

- Platform -

-
-

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

-
-

- BOOST_NO_CV_SPECIALIZATIONS -

-
-

- Compiler -

-
-

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

-
-

- BOOST_NO_CV_VOID_SPECIALIZATIONS -

-
-

- Compiler -

-
-

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

-
-

- BOOST_NO_CWCHAR -

-
-

- Platform -

-
-

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

-
-

- BOOST_NO_CWCTYPE -

-
-

- Platform -

-
-

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

-
-

- BOOST_NO_DEPENDENT_NESTED_DERIVATIONS -

-
-

- Compiler -

-
-

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

+

+ [[BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP][Compiler][ + Compiler does not implement argument-dependent lookup (also named Koenig + lookup); see std::3.4.2 [basic.koenig.lookup] ]] [[BOOST_NO_AUTO_PTR][Standard + library][ If the compiler / library supplies non-standard or broken std::auto_ptr. + ]] [[BOOST_NO_CTYPE_FUNCTIONS][Platform][ + The Platform does not provide functions for the character-classifying operations + <ctype.h> + and <cctype>, only macros. ]] [[BOOST_NO_CV_SPECIALIZATIONS][Compiler][ + If template specialisations for cv-qualified types conflict with a specialisation + for a cv-unqualififed type. ]] [[BOOST_NO_CV_VOID_SPECIALIZATIONS][Compiler][ + If template specialisations for cv-void types conflict with a specialisation + for void. ]] [[BOOST_NO_CWCHAR][Platform][ + The Platform does not provide <wchar.h> and + <cwchar>. ]] [[BOOST_NO_CWCTYPE][Platform][ + The Platform does not provide <wctype.h> and + <cwctype>. ]] [[BOOST_NO_DEPENDENT_NESTED_DERIVATIONS][Compiler][ + The compiler fails to compile a nested class that has a dependent base class: +

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

- }; -

- - - - -

- BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS -

- - -

- Compiler -

- - -

- Template value parameters cannot have a dependent type, for example: - + }; ]] [[BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS][Compiler][ + Template value parameters cannot have a dependent type, for example:

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

-

- - - - -

- BOOST_NO_EXCEPTION_STD_NAMESPACE -

- - -

- Standard Library -

- - -

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

- - - - -

- BOOST_NO_EXCEPTIONS -

- - -

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

- - - - -

- BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS -

- - -

- Compiler -

- - -

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

- - - - -

- BOOST_NO_FUNCTION_TEMPLATE_ORDERING -

- - -

- Compiler -

- - -

- The compiler does not perform function template ordering or its function - template ordering is incorrect. + ]] [[BOOST_NO_EXCEPTION_STD_NAMESPACE][Standard + Library][ The standard library does not put some or all of the contents of + <exception> in namespace std. ]] [[BOOST_NO_EXCEPTIONS][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! ]] [[BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS][Compiler][ + Can only use deduced template arguments when calling function template instantiations. + ]] [[BOOST_NO_FUNCTION_TEMPLATE_ORDERING][Compiler][ + The compiler does not perform function template ordering or its function + template ordering is incorrect.

-
// #1
+
// #1
 template<class T> void f(T);
 
 // #2
@@ -376,774 +193,114 @@
 f(&bar); // should choose #2.
 

-

- - - - -

- BOOST_NO_INCLASS_MEMBER_INITIALIZATION -

- - -

- Compiler -

- - -

- Compiler violates std::9.4.2/4. -

- - - - -

- BOOST_NO_INTRINSIC_WCHAR_T -

- - -

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

- - - - -

- BOOST_NO_IOSFWD -

- - -

- std lib -

- - -

- The standard library lacks <iosfwd>. -

- - - - -

- BOOST_NO_IOSTREAM -

- - -

- std lib -

- - -

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

- - - - -

- BOOST_NO_IS_ABSTRACT -

- - -

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

- - - - -

- BOOST_NO_LIMITS -

- - -

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

- - - - -

- BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS -

- - -

- Standard library -

- - -

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

- - - - -

- BOOST_NO_LONG_LONG_NUMERIC_LIMITS -

- - -

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

- - - - -

- BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS -

- - -

- Compiler -

- - -

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

- - - - -

- BOOST_NO_MEMBER_TEMPLATE_KEYWORD -

- - -

- Compiler -

- - -

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

- - - - -

- BOOST_NO_MEMBER_TEMPLATE_FRIENDS -

- - -

- Compiler -

- - -

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

- - - - -

- BOOST_NO_MEMBER_TEMPLATES -

- - -

- Compiler -

- - -

- Member template functions not fully supported. -

- - - - -

- BOOST_NO_MS_INT64_NUMERIC_LIMITS -

- - -

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

- - - - -

- BOOST_NO_OPERATORS_IN_NAMESPACE -

- - -

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

- - - - -

- BOOST_NO_POINTER_TO_MEMBER_CONST -

- - -

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

- - - - -

- BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS -

- - -

- Compiler -

- - -

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

- - - - -

- BOOST_NO_PRIVATE_IN_AGGREGATE -

- - -

- Compiler -

- - -

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

- - - - -

- BOOST_NO_SFINAE -

- - -

- Compiler -

- - -

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

- - - - -

- BOOST_NO_STD_ALLOCATOR -

- - -

- Standard library -

- - -

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

- - - - -

- BOOST_NO_STD_DISTANCE -

- - -

- Standard library -

- - -

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

- - - - -

- BOOST_NO_STD_ITERATOR -

- - -

- Standard library -

- - -

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

- - - - -

- BOOST_NO_STD_ITERATOR_TRAITS -

- - -

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

- - - - -

- BOOST_NO_STD_LOCALE -

- - -

- Standard library -

- - -

- The standard library lacks std::locale. -

- - - - -

- BOOST_NO_STD_MESSAGES -

- - -

- Standard library -

- - -

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

- - - - -

- BOOST_NO_STD_MIN_MAX -

- - -

- Standard library -

- - -

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

- - - - -

- BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN -

- - -

- Standard library -

- - -

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

- - - - -

- BOOST_NO_STD_TYPEINFO -

- - -

- Standard library -

- - -

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

- - - - -

- BOOST_NO_STD_USE_FACET -

- - -

- Standard library -

- - -

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

- - - - -

- BOOST_NO_STD_WSTREAMBUF -

- - -

- Standard library -

- - -

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

- - - - -

- BOOST_NO_STD_WSTRING -

- - -

- Standard library -

- - -

- The standard library lacks std::wstring. -

- - - - -

- BOOST_NO_STDC_NAMESPACE -

- - -

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

- - - - -

- BOOST_NO_STRINGSTREAM -

- - -

- Standard library -

- - -

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

- - - - -

- BOOST_NO_SWPRINTF -

- - -

- Platform -

- - -

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

- - - - -

- BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION -

- - -

- Compiler -

- - -

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

- - - - -

- BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS -

- - -

- Standard library -

- - -

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

- - - - -

- BOOST_NO_TEMPLATE_TEMPLATES -

- - -

- Compiler -

- - -

- The compiler does not support template template parameters. -

- - - - -

- BOOST_NO_TYPEID -

- - -

- Compiler -

- - -

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

- - - - -

- BOOST_NO_UNREACHABLE_RETURN_DETECTION -

- - -

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

- - - - -

- BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE -

- - -

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

- - - - -

- BOOST_NO_USING_TEMPLATE -

- - -

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

- - - - -

- BOOST_NO_VOID_RETURNS -

- - -

- Compiler -

- - -

- The compiler does not allow a void function to return the result - of calling another void function. + ]] [[BOOST_NO_INCLASS_MEMBER_INITIALIZATION][Compiler][ + Compiler violates std::9.4.2/4. ]] [[BOOST_NO_INTRINSIC_WCHAR_T][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. ]] [[BOOST_NO_IOSFWD][std + lib][ The standard library lacks <iosfwd>. + ]] [[BOOST_NO_IOSTREAM][std + lib][ The standard library lacks <iostream>, + <istream> or <ostream>. + ]] [[BOOST_NO_IS_ABSTRACT][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. ]] [[BOOST_NO_LIMITS][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. + ]] [[BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS][Standard + library][ Constants such as numeric_limits<T>::is_signed are not available for use at + compile-time. ]] [[BOOST_NO_LONG_LONG_NUMERIC_LIMITS][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. ]] [[BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS][Compiler][ + The compiler does not support the specialization of individual member functions + of template classes. ]] [[BOOST_NO_MEMBER_TEMPLATE_KEYWORD][Compiler][ + If the compiler supports member templates, but not the template keyword when + accessing member template classes. ]] [[BOOST_NO_MEMBER_TEMPLATE_FRIENDS][Compiler][ + Member template friend syntax (template<class P> friend class frd;) described + in the C++ Standard, 14.5.3, not supported. ]] [[BOOST_NO_MEMBER_TEMPLATES][Compiler][ + Member template functions not fully supported. ]] [[BOOST_NO_MS_INT64_NUMERIC_LIMITS][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. ]] [[BOOST_NO_OPERATORS_IN_NAMESPACE][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. ]] [[BOOST_NO_POINTER_TO_MEMBER_CONST][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. ]] [[BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS][Compiler][ + Pointers to members don't work when used as template parameters. ]] [[BOOST_NO_PRIVATE_IN_AGGREGATE][Compiler][ + The compiler misreads 8.5.1, treating classes as non-aggregate if they contain + private or protected member functions. ]] [[BOOST_NO_SFINAE][Compiler][ + The compiler does not support the "Substitution Failure Is Not An Error" + meta-programming idiom. ]] [[BOOST_NO_STD_ALLOCATOR][Standard + library][ The C++ standard library does not provide a standards conforming + std::allocator. ]] [[BOOST_NO_STD_DISTANCE][Standard + library][ The platform does not have a conforming version of std::distance. + ]] [[BOOST_NO_STD_ITERATOR][Standard + library][ The C++ implementation fails to provide the std::iterator + class. ]] [[BOOST_NO_STD_ITERATOR_TRAITS][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. ]] [[BOOST_NO_STD_LOCALE][Standard + library][ The standard library lacks std::locale. + ]] [[BOOST_NO_STD_MESSAGES][Standard + library][ The standard library lacks a conforming std::messages + facet. ]] [[BOOST_NO_STD_MIN_MAX][Standard + library][ The C++ standard library does not provide the min() and max() template functions that should be in <algorithm>. ]] [[BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN][Standard + library][ Defined if the standard library's output iterators are not assignable. + ]] [[BOOST_NO_STD_TYPEINFO][Standard + library][ The <typeinfo> header declares type_info + in the global namespace instead of namespace std. ]] [[BOOST_NO_STD_USE_FACET][Standard + library][ The standard library lacks a conforming std::use_facet. + ]] [[BOOST_NO_STD_WSTREAMBUF][Standard + library][ The standard library's implementation of std::basic_streambuf<wchar_t> is either missing, incomplete, or buggy. + ]] [[BOOST_NO_STD_WSTRING][Standard + library][ The standard library lacks std::wstring. + ]] [[BOOST_NO_STDC_NAMESPACE][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... ]] [[BOOST_NO_STRINGSTREAM][Standard + library][ The C++ implementation does not provide the <sstream> + header. ]] [[BOOST_NO_SWPRINTF][Platform][ + The platform does not have a conforming version of swprintf. + ]] [[BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION][Compiler][ + Class template partial specialization (14.5.4 [temp.class.spec]) not supported. + ]] [[BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS][Standard + library][ The standard library does not provide templated iterator constructors + for its containers. ]] [[BOOST_NO_TEMPLATE_TEMPLATES][Compiler][ + The compiler does not support template template parameters. ]] [[BOOST_NO_TYPEID][Compiler][ The compiler + does not support the typeid operator at all. ]] [[BOOST_NO_UNREACHABLE_RETURN_DETECTION][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. ]] [[BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE][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. ]] [[BOOST_NO_USING_TEMPLATE][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). ]] [[BOOST_NO_VOID_RETURNS][Compiler][ The compiler + does not allow a void function to return the result of calling another void + function.

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

-

- - - - + ]] ] +

diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html index 922412ed..0b53b618 100644 --- a/doc/html/boost_config/guidelines_for_boost_authors.html +++ b/doc/html/boost_config/guidelines_for_boost_authors.html @@ -12,7 +12,7 @@ - + diff --git a/doc/html/boost_config/rationale.html b/doc/html/boost_config/rationale.html index 28845631..3568c400 100644 --- a/doc/html/boost_config/rationale.html +++ b/doc/html/boost_config/rationale.html @@ -12,7 +12,7 @@
Boost C++ LibrariesHomeHome Libraries People FAQ
- + diff --git a/doc/html/index.html b/doc/html/index.html index f1a6f7c7..030bea81 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -10,7 +10,7 @@
Boost C++ LibrariesHomeHome Libraries People FAQ
- + @@ -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)

@@ -958,7 +958,7 @@

Boost C++ LibrariesHomeHome Libraries People FAQ
- +

Last revised: February 21, 2008 at 16:56:38 GMT

Last revised: March 28, 2008 at 17:01:32 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 546d1a7b..2e4b026d 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -38,6 +38,10 @@ symbol being looked up in the current scope. For example, using in namespaces nested inside boost (but not elsewhere). Probably Borland specific. ]] +[[`BOOST_NO_ADL_BARRIER`][Compiler][ +The compiler locates and searches namespaces that it should /*not*/ in fact +search when performing argument dependent lookup.] +]] [[`BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP`][Compiler][ Compiler does not implement argument-dependent lookup (also named Koenig lookup); see std::3.4.2 \[basic.koenig.lookup\] diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index 815b56db..436fa152 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -67,6 +67,7 @@ # endif # if (__SUNPRO_CC <= 0x580) # define BOOST_NO_IS_ABSTRACT +# define BOOST_NO_ADL_BARRIER # endif // diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 198a7334..b75dc283 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -83,6 +83,11 @@ # define BOOST_NO_TWO_PHASE_NAME_LOOKUP #endif +#if _MSC_VER == 1500 // 1500 == VC++ 9.0 + // A bug in VC9: +# define BOOST_NO_ADL_BARRIER +#endif + #ifndef _NATIVE_WCHAR_T_DEFINED # define BOOST_NO_INTRINSIC_WCHAR_T #endif diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 04cbaaa2..88ab7077 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -1,7 +1,7 @@ # # Regression test Jamfile for boost configuration setup. # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Fri Oct 19 13:34:11 2007 +# This file was automatically generated on Fri Mar 28 16:52:14 2008 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -173,6 +173,9 @@ test-suite "BOOST_MSVC_STD_ITERATOR" : test-suite "BOOST_HAS_WINTHREADS" : [ run has_winthreads_pass.cpp ] [ compile-fail has_winthreads_fail.cpp ] ; +test-suite "BOOST_NO_ADL_BARRIER" : +[ run no_adl_barrier_pass.cpp ] +[ compile-fail no_adl_barrier_fail.cpp ] ; test-suite "BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP" : [ run no_arg_dep_lookup_pass.cpp ] [ compile-fail no_arg_dep_lookup_fail.cpp ] ; diff --git a/test/config_info.cpp b/test/config_info.cpp index 75e713d1..d4d283f4 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -952,6 +952,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_HAS_WINTHREADS); PRINT_MACRO(BOOST_MSVC6_MEMBER_TEMPLATES); PRINT_MACRO(BOOST_MSVC_STD_ITERATOR); + PRINT_MACRO(BOOST_NO_ADL_BARRIER); PRINT_MACRO(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP); PRINT_MACRO(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS); PRINT_MACRO(BOOST_NO_AUTO_PTR); @@ -1019,6 +1020,7 @@ void print_boost_macros() + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index 9361d6f9..5f8b3965 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Fri Oct 19 13:34:11 2007 +// This file was automatically generated on Fri Mar 28 16:52:14 2008 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -22,6 +22,11 @@ int error_count = 0; +#ifndef BOOST_NO_ADL_BARRIER +#include "boost_no_adl_barrier.ipp" +#else +namespace boost_no_adl_barrier = empty_boost; +#endif #ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP #include "boost_no_arg_dep_lookup.ipp" #else @@ -841,6 +846,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_HAS_WINTHREADS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_adl_barrier::test()) + { + std::cerr << "Failed test for BOOST_NO_ADL_BARRIER at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_argument_dependent_lookup::test()) { std::cerr << "Failed test for BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP at: " << __FILE__ << ":" << __LINE__ << std::endl;