Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r52040 - branches/release/boost/utility
From: pdimov_at_[hidden]
Date: 2009-03-28 16:53:27


Author: pdimov
Date: 2009-03-28 16:53:26 EDT (Sat, 28 Mar 2009)
New Revision: 52040
URL: http://svn.boost.org/trac/boost/changeset/52040

Log:
Merge [51977], [51986], [52010] to release.
Text files modified:
   branches/release/boost/utility/addressof.hpp | 26 +++++++++++++++++++++++---
   1 files changed, 23 insertions(+), 3 deletions(-)

Modified: branches/release/boost/utility/addressof.hpp
==============================================================================
--- branches/release/boost/utility/addressof.hpp (original)
+++ branches/release/boost/utility/addressof.hpp 2009-03-28 16:53:26 EDT (Sat, 28 Mar 2009)
@@ -47,7 +47,7 @@
 
 template<class T> T * addressof( T & v )
 {
-#if BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x610 ) )
+#if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x610 ) )
 
     return boost::detail::addressof_impl<T>::f( v, 0 );
 
@@ -58,9 +58,29 @@
 #endif
 }
 
+#if defined( __SUNPRO_CC ) && BOOST_WORKAROUND( __SUNPRO_CC, BOOST_TESTED_AT( 0x590 ) )
+
+namespace detail
+{
+
+template<class T> struct addressof_addp
+{
+ typedef T * type;
+};
+
+} // namespace detail
+
+template< class T, std::size_t N >
+typename detail::addressof_addp< T[N] >::type addressof( T (&t)[N] )
+{
+ return &t;
+}
+
+#endif
+
 // Borland doesn't like casting an array reference to a char reference
 // but these overloads work around the problem.
-# if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+#if defined( __BORLANDC__ ) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
 template<typename T,std::size_t N>
 T (*addressof(T (&t)[N]))[N]
 {
@@ -72,7 +92,7 @@
 {
    return reinterpret_cast<const T(*)[N]>(&t);
 }
-# endif
+#endif
 
 } // 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