File tree Expand file tree Collapse file tree 1 file changed +9
-13
lines changed Expand file tree Collapse file tree 1 file changed +9
-13
lines changed Original file line number Diff line number Diff 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 }
You can’t perform that action at this time.
0 commit comments