Przeglądaj źródła

type_id: type_info from variable

Michele Caini 3 lat temu
rodzic
commit
9e68eb4d2c
2 zmienionych plików z 11 dodań i 0 usunięć
  1. 6 0
      src/entt/core/type_info.hpp
  2. 5 0
      test/entt/core/type_info.cpp

+ 6 - 0
src/entt/core/type_info.hpp

@@ -262,6 +262,12 @@ template<typename Type>
     }
 }
 
+/*! @copydoc type_id */
+template<typename Type>
+[[nodiscard]] const type_info &type_id(Type &&) ENTT_NOEXCEPT {
+    return type_id<std::remove_cv_t<std::remove_reference_t<Type>>>();
+}
+
 } // namespace entt
 
 #endif

+ 5 - 0
test/entt/core/type_info.cpp

@@ -48,6 +48,11 @@ TEST(TypeInfo, Functionalities) {
     static_assert(std::is_copy_assignable_v<entt::type_info>);
     static_assert(std::is_move_assignable_v<entt::type_info>);
 
+    const int value = 42;
+
+    ASSERT_EQ(entt::type_id(value), entt::type_id<int>());
+    ASSERT_EQ(entt::type_id(42), entt::type_id<int>());
+
     ASSERT_EQ(entt::type_id<int>(), entt::type_id<int>());
     ASSERT_EQ(entt::type_id<int &>(), entt::type_id<int &&>());
     ASSERT_EQ(entt::type_id<int &>(), entt::type_id<int>());