Explorar el Código

any: refine replacement for std aligned storage (see #919)

Michele Caini hace 3 años
padre
commit
0c062cc351
Se han modificado 1 ficheros con 3 adiciones y 2 borrados
  1. 3 2
      src/entt/core/any.hpp

+ 3 - 2
src/entt/core/any.hpp

@@ -52,7 +52,6 @@ template<std::size_t Len, std::size_t Align>
 class basic_any {
 class basic_any {
     using operation = internal::any_operation;
     using operation = internal::any_operation;
     using policy = internal::any_policy;
     using policy = internal::any_policy;
-
     using vtable_type = const void *(const operation, const basic_any &, const void *);
     using vtable_type = const void *(const operation, const basic_any &, const void *);
 
 
     template<typename Type>
     template<typename Type>
@@ -408,7 +407,9 @@ public:
 private:
 private:
     union {
     union {
         const void *instance;
         const void *instance;
-        alignas(Align) std::byte storage[Len + !Len];
+        struct storage_type {
+            alignas(Align) std::byte data[Len + !Len];
+        } storage;
     };
     };
     const type_info *info;
     const type_info *info;
     vtable_type *vtable;
     vtable_type *vtable;