Skip to content

Commit dadf493

Browse files
committed
meta: cleanup
1 parent 3e5842a commit dadf493

File tree

1 file changed

+9
-13
lines changed

1 file changed

+9
-13
lines changed

src/entt/meta/meta.hpp

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -186,20 +186,16 @@ class meta_any {
186186
}
187187

188188
if constexpr(is_complete_v<meta_sequence_container_traits<Type>> || is_complete_v<meta_associative_container_traits<Type>>) {
189-
using container_type = std::conditional_t<is_complete_v<meta_sequence_container_traits<Type>>, meta_sequence_container, meta_associative_container>;
190-
static constexpr auto flag = is_complete_v<meta_sequence_container_traits<Type>> ? internal::meta_traits::is_sequence_container : internal::meta_traits::is_associative_container;
191-
192-
if(!!(req & flag)) {
193-
if(!(req & internal::meta_traits::is_const)) {
194-
if(auto *elem = any_cast<Type>(&const_cast<meta_any &>(value).storage); elem != nullptr) {
195-
// NOLINTNEXTLINE(bugprone-casting-through-void)
196-
*static_cast<container_type *>(const_cast<void *>(other)) = container_type{*value.ctx, *elem};
197-
return;
198-
}
189+
if(constexpr auto flag = (is_complete_v<meta_sequence_container_traits<Type>> ? internal::meta_traits::is_sequence_container : internal::meta_traits::is_associative_container); !!(req & flag)) {
190+
using container_type = std::conditional_t<is_complete_v<meta_sequence_container_traits<Type>>, meta_sequence_container, meta_associative_container>;
191+
192+
if(!!(req & internal::meta_traits::is_const) || (value.storage.policy() == any_policy::cref)) {
193+
// NOLINTNEXTLINE(bugprone-casting-through-void)
194+
*static_cast<container_type *>(const_cast<void *>(other)) = container_type{*value.ctx, any_cast<const Type &>(value.storage)};
195+
} else {
196+
// NOLINTNEXTLINE(bugprone-casting-through-void)
197+
*static_cast<container_type *>(const_cast<void *>(other)) = container_type{*value.ctx, any_cast<Type &>(const_cast<meta_any &>(value).storage)};
199198
}
200-
201-
// NOLINTNEXTLINE(bugprone-casting-through-void)
202-
*static_cast<container_type *>(const_cast<void *>(other)) = container_type{*value.ctx, any_cast<const Type &>(value.storage)};
203199
}
204200
}
205201
}

0 commit comments

Comments
 (0)