Bladeren bron

*: make it work with VS2017

Michele Caini 4 jaren geleden
bovenliggende
commit
1434f942dd
2 gewijzigde bestanden met toevoegingen van 10 en 9 verwijderingen
  1. 4 5
      src/entt/core/any.hpp
  2. 6 4
      src/entt/meta/meta.hpp

+ 4 - 5
src/entt/core/any.hpp

@@ -185,12 +185,11 @@ public:
      * @param value An instance of an object to use to initialize the wrapper.
      */
     template<typename Type>
-    [[deprecated("Use std::in_place_type<T &> or entt::make_any<T &> instead")]]
     basic_any(std::reference_wrapper<Type> value) ENTT_NOEXCEPT
-        : instance{},
-          vtable{&basic_vtable<Type &>}
+        : basic_any{}
     {
-        initialize<Type &>(value.get());
+        // invokes deprecated assignment operator (and avoids issues with vs2017)
+        *this = value;
     }
 
     /**
@@ -262,7 +261,7 @@ public:
      * @return This any object.
      */
     template<typename Type>
-    [[deprecated("Use emplace<Type &> instead")]]
+    [[deprecated("Use std::in_place_type<T &>, entt::make_any<T &> or emplace<Type &> instead")]]
     basic_any & operator=(std::reference_wrapper<Type> value) ENTT_NOEXCEPT {
         emplace<Type &>(value.get());
         return *this;

+ 6 - 4
src/entt/meta/meta.hpp

@@ -253,10 +253,12 @@ public:
      * @param value An instance of an object to use to initialize the wrapper.
      */
     template<typename Type>
-    [[deprecated("Use std::in_place_type<T &> or entt::make_meta_any<T &> instead")]]
     meta_any(std::reference_wrapper<Type> value)
-        : meta_any{std::in_place_type<Type &>, value.get()}
-    {}
+        : meta_any{}
+    {
+        // invokes deprecated assignment operator (and avoids issues with vs2017)
+        *this = value;
+    }
 
     /**
      * @brief Constructs a wrapper from a given value.
@@ -320,7 +322,7 @@ public:
      * @return This meta any object.
      */
     template<typename Type>
-    [[deprecated("Use emplace<Type &> instead")]]
+    [[deprecated("Use std::in_place_type<T &>, entt::make_meta_any<T &> or emplace<Type &> instead")]]
     meta_any & operator=(std::reference_wrapper<Type> value) {
         emplace<Type &>(value.get());
         return *this;