diff --git a/src/entt/core/type_info.hpp b/src/entt/core/type_info.hpp index fe8cd5374..b4d5cc863 100644 --- a/src/entt/core/type_info.hpp +++ b/src/entt/core/type_info.hpp @@ -97,6 +97,9 @@ struct ENTT_API type_seq final { static const id_type value = internal::type_seq::next(); return value; } + + /*! @brief Conversion operator to the underlying type. */ + [[nodiscard]] constexpr operator id_type() const ENTT_NOEXCEPT { return value(); } }; @@ -118,6 +121,9 @@ struct type_hash final { return type_seq::value(); #endif } + + /*! @brief Conversion operator to the underlying type. */ + [[nodiscard]] constexpr operator id_type() const ENTT_NOEXCEPT { return value(); } }; @@ -134,6 +140,9 @@ struct type_name final { [[nodiscard]] static constexpr std::string_view value() ENTT_NOEXCEPT { return internal::type_name(0); } + + /*! @brief Conversion operator to the underlying type. */ + [[nodiscard]] constexpr operator std::string_view() const ENTT_NOEXCEPT { return value(); } }; diff --git a/test/entt/core/type_info.cpp b/test/entt/core/type_info.cpp index 4fb3fd4ea..4d379c783 100644 --- a/test/entt/core/type_info.cpp +++ b/test/entt/core/type_info.cpp @@ -10,12 +10,14 @@ TEST(TypeSeq, Functionalities) { ASSERT_NE(entt::type_seq::value(), entt::type_seq::value()); ASSERT_NE(entt::type_seq::value(), entt::type_seq::value()); ASSERT_NE(entt::type_seq::value(), entt::type_seq::value()); + ASSERT_EQ(static_cast(entt::type_seq{}), entt::type_seq::value()); } TEST(TypeHash, Functionalities) { ASSERT_NE(entt::type_hash::value(), entt::type_hash::value()); ASSERT_NE(entt::type_hash::value(), entt::type_hash::value()); ASSERT_EQ(entt::type_hash::value(), entt::type_hash::value()); + ASSERT_EQ(static_cast(entt::type_hash{}), entt::type_hash::value()); } TEST(TypeName, Functionalities) { @@ -27,6 +29,8 @@ TEST(TypeName, Functionalities) { ASSERT_TRUE(((entt::type_name, double>>::value()) == std::string_view{"entt::type_list, double>"}) || ((entt::type_name, double>>::value()) == std::string_view{"struct entt::type_list,double>"})); + + ASSERT_EQ(static_cast(entt::type_name{}), entt::type_name::value()); } TEST(TypeInfo, Functionalities) {