Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r52221 - in branches/release/boost: . config config/stdlib
From: DDeakins_at_[hidden]
Date: 2009-04-06 17:25:19


Author: davedeakins
Date: 2009-04-06 17:25:18 EDT (Mon, 06 Apr 2009)
New Revision: 52221
URL: http://svn.boost.org/trac/boost/changeset/52221

Log:
Have config/select_stdlib_config.hpp and config/stdlib/stlport.hpp use <cstddef> instead of <utility> to determine which standard library is in use. For std lib implementations that rely on Boost components like TypeTraits, Bind, Function, or SmartPtr, this helps to avoid circular header dependency issues, since <cstddef> is much less likely to pull in Boost libraries than <utility>.

In get_pointer.hpp, switched to using <boost/config/no_tr1/memory.hpp> instead of using <memory> directly. As above, this helps avoid circular header dependency issues in Boost-supplemented std libs (specifically it avoids issues when <memory> pulls in pieces of Boost.SmartPtr).

These two changes were made in response to testing done with STLport 5.2.1 using the _STLP_USE_BOOST_SUPPORT option.
Text files modified:
   branches/release/boost/config/select_stdlib_config.hpp | 6 +++---
   branches/release/boost/config/stdlib/stlport.hpp | 2 +-
   branches/release/boost/get_pointer.hpp | 6 +++++-
   3 files changed, 9 insertions(+), 5 deletions(-)

Modified: branches/release/boost/config/select_stdlib_config.hpp
==============================================================================
--- branches/release/boost/config/select_stdlib_config.hpp (original)
+++ branches/release/boost/config/select_stdlib_config.hpp 2009-04-06 17:25:18 EDT (Mon, 06 Apr 2009)
@@ -12,12 +12,12 @@
 // locate which std lib we are using and define BOOST_STDLIB_CONFIG as needed:
 
 // we need to include a std lib header here in order to detect which
-// library is in use, use <utility> as it's about the smallest
-// of the std lib headers - do not rely on this header being included -
+// library is in use, use <cstddef> as it's one of the smaller std lib headers
+// - do not rely on this header being included -
 // users can short-circuit this header if they know whose std lib
 // they are using.
 
-#include <boost/config/no_tr1/utility.hpp>
+#include <cstddef>
 
 #if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
 // STLPort library; this _must_ come first, otherwise since

Modified: branches/release/boost/config/stdlib/stlport.hpp
==============================================================================
--- branches/release/boost/config/stdlib/stlport.hpp (original)
+++ branches/release/boost/config/stdlib/stlport.hpp 2009-04-06 17:25:18 EDT (Mon, 06 Apr 2009)
@@ -10,7 +10,7 @@
 // STLPort standard library config:
 
 #if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
-# include <boost/config/no_tr1/utility.hpp>
+# include <cstddef>
 # if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
 # error "This is not STLPort!"
 # endif

Modified: branches/release/boost/get_pointer.hpp
==============================================================================
--- branches/release/boost/get_pointer.hpp (original)
+++ branches/release/boost/get_pointer.hpp 2009-04-06 17:25:18 EDT (Mon, 06 Apr 2009)
@@ -5,7 +5,11 @@
 #ifndef GET_POINTER_DWA20021219_HPP
 # define GET_POINTER_DWA20021219_HPP
 
-# include <memory>
+// In order to avoid circular dependencies with Boost.TR1
+// we make sure that our include of <memory> doesn't try to
+// pull in the TR1 headers: that's why we use this header
+// rather than including <memory> directly:
+# include <boost/config/no_tr1/memory.hpp> // std::auto_ptr
 
 namespace boost {
 


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk