#include <boost/cstdint.hpp>
#include <boost/atomic/detail/config.hpp>
#include <boost/atomic/detail/string_ops.hpp>
+#include <boost/atomic/detail/aligned_variable.hpp>
#include <boost/atomic/detail/type_traits/alignment_of.hpp>
-#if defined(BOOST_ATOMIC_DETAIL_NO_CXX11_ALIGNAS)
-#include <boost/type_traits/type_with_alignment.hpp>
-#endif
+#include <boost/atomic/detail/header.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
#pragma once
template< std::size_t Size, std::size_t Alignment = 1u >
struct BOOST_ATOMIC_DETAIL_MAY_ALIAS buffer_storage
{
-#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_ALIGNAS)
- alignas(Alignment) unsigned char data[Size];
-#else
- union
- {
- unsigned char data[Size];
- typename boost::type_with_alignment< Alignment >::type aligner;
- };
-#endif
+ typedef unsigned char data_type[Size];
+ BOOST_ATOMIC_DETAIL_ALIGNED_VAR_TPL(Alignment, data_type, data);
BOOST_FORCEINLINE bool operator! () const BOOST_NOEXCEPT
{
} // namespace atomics
} // namespace boost
+#include <boost/atomic/detail/footer.hpp>
+
#endif // BOOST_ATOMIC_DETAIL_STORAGE_TRAITS_HPP_INCLUDED_