diff options
| -rw-r--r-- | src/common/intrusive_red_black_tree.h | 4 | ||||
| -rw-r--r-- | src/common/parent_of_member.h | 14 | 
2 files changed, 10 insertions, 8 deletions
| diff --git a/src/common/intrusive_red_black_tree.h b/src/common/intrusive_red_black_tree.h index 929b5497e..fb55de94e 100644 --- a/src/common/intrusive_red_black_tree.h +++ b/src/common/intrusive_red_black_tree.h @@ -533,7 +533,7 @@ private:      }  private: -    static constexpr TYPED_STORAGE(Derived) DerivedStorage = {}; +    static constexpr TypedStorage<Derived> DerivedStorage = {};      static_assert(GetParent(GetNode(GetPointer(DerivedStorage))) == GetPointer(DerivedStorage));  }; @@ -549,7 +549,7 @@ public:      using TreeTypeImpl = impl::IntrusiveRedBlackTreeImpl;      static constexpr bool IsValid() { -        TYPED_STORAGE(Derived) DerivedStorage = {}; +        TypedStorage<Derived> DerivedStorage = {};          return GetParent(GetNode(GetPointer(DerivedStorage))) == GetPointer(DerivedStorage);      } diff --git a/src/common/parent_of_member.h b/src/common/parent_of_member.h index 1af31ee44..d9a14529d 100644 --- a/src/common/parent_of_member.h +++ b/src/common/parent_of_member.h @@ -10,21 +10,23 @@  #include "common/common_types.h"  namespace Common { - +namespace detail {  template <typename T, size_t Size, size_t Align> -struct TypedStorage { +struct TypedStorageImpl {      std::aligned_storage_t<Size, Align> storage_;  }; +} // namespace detail -#define TYPED_STORAGE(...) TypedStorage<__VA_ARGS__, sizeof(__VA_ARGS__), alignof(__VA_ARGS__)> +template <typename T> +using TypedStorage = detail::TypedStorageImpl<T, sizeof(T), alignof(T)>;  template <typename T> -static constexpr T* GetPointer(TYPED_STORAGE(T) & ts) { +static constexpr T* GetPointer(TypedStorage<T>& ts) {      return static_cast<T*>(static_cast<void*>(std::addressof(ts.storage_)));  }  template <typename T> -static constexpr const T* GetPointer(const TYPED_STORAGE(T) & ts) { +static constexpr const T* GetPointer(const TypedStorage<T>& ts) {      return static_cast<const T*>(static_cast<const void*>(std::addressof(ts.storage_)));  } @@ -72,7 +74,7 @@ struct OffsetOfCalculator {      union Union {          char c{};          UnionHolder first_union; -        TYPED_STORAGE(ParentType) parent; +        TypedStorage<ParentType> parent;          constexpr Union() : c() {}      }; | 
