Bring up to date with Trunk (required by type_traits changes).

[SVN r55114]
This commit is contained in:
John Maddock
2009-07-23 11:20:00 +00:00
parent e398f63259
commit f618d007b4

View File

@ -54,6 +54,14 @@ struct aligned_storage_imp
, type_with_alignment<alignment_>
>::type align_;
} data_;
void* address() const { return const_cast<aligned_storage_imp*>(this); }
};
template< std::size_t alignment_ >
struct aligned_storage_imp<0u,alignment_>
{
/* intentionally empty */
void* address() const { return 0; }
};
}} // namespace detail::aligned_storage
@ -62,12 +70,15 @@ template <
std::size_t size_
, std::size_t alignment_ = std::size_t(-1)
>
class aligned_storage
class aligned_storage :
#ifndef __BORLANDC__
private
#else
public
#endif
detail::aligned_storage::aligned_storage_imp<size_, alignment_>
{
private: // representation
detail::aligned_storage::aligned_storage_imp<size_, alignment_> data_;
public: // constants
typedef detail::aligned_storage::aligned_storage_imp<size_, alignment_> type;
@ -118,14 +129,14 @@ public: // accessors
void* address()
{
return this;
return static_cast<type*>(this)->address();
}
#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
const void* address() const
{
return this;
return static_cast<const type*>(this)->address();
}
#else // MSVC6