]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/boost/atomic/detail/storage_traits.hpp
import quincy beta 17.1.0
[ceph.git] / ceph / src / boost / boost / atomic / detail / storage_traits.hpp
index 7160b20085027b50cb21d5c4a267ac134c390ad0..1ba9d8fb09d61eccb5b5b59e8061ef73a0cb02f8 100644 (file)
 #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
@@ -42,15 +41,8 @@ BOOST_FORCEINLINE void non_atomic_load(T const volatile& from, T& to) BOOST_NOEX
 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
     {
@@ -190,4 +182,6 @@ struct storage_size_of
 } // namespace atomics
 } // namespace boost
 
+#include <boost/atomic/detail/footer.hpp>
+
 #endif // BOOST_ATOMIC_DETAIL_STORAGE_TRAITS_HPP_INCLUDED_