meta: review meta_arg[_node] + increase code coverage

This commit is contained in:
Michele Caini
2022-09-08 13:29:10 +02:00
parent eedecc07fd
commit b45db747a8
2 changed files with 9 additions and 5 deletions

View File

@@ -138,12 +138,14 @@ meta_type_node resolve() noexcept;
template<typename... Args>
[[nodiscard]] meta_type_node meta_arg_node(type_list<Args...>, [[maybe_unused]] const std::size_t index) noexcept {
if constexpr(sizeof...(Args) == 0u) {
return {};
} else {
const meta_type_node args[sizeof...(Args)]{internal::resolve<std::remove_cv_t<std::remove_reference_t<Args>>>()...};
return args[index];
if constexpr(sizeof...(Args) != 0u) {
if(index < sizeof...(Args)) {
const meta_type_node args[sizeof...(Args)]{internal::resolve<std::remove_cv_t<std::remove_reference_t<Args>>>()...};
return args[index];
}
}
return {};
}
template<typename Type>

View File

@@ -73,8 +73,10 @@ TEST_F(MetaUtility, MetaDispatch) {
}
TEST_F(MetaUtility, MetaArg) {
ASSERT_EQ((entt::meta_arg<entt::type_list<>>(3u)), entt::meta_type{});
ASSERT_EQ((entt::meta_arg<entt::type_list<int, char>>(0u)), entt::resolve<int>());
ASSERT_EQ((entt::meta_arg<entt::type_list<int, char>>(1u)), entt::resolve<char>());
ASSERT_EQ((entt::meta_arg<entt::type_list<int, char>>(2u)), entt::meta_type{});
}
TEST_F(MetaUtility, MetaSetter) {