| 84 | |
| 85 | template <InfoTag TAG> |
| 86 | bool simple_struct_has_pointers(const UnownedInfo<TAG>& info) { |
| 87 | static_assert(TAG == InfoTag::STRUCT || TAG == InfoTag::UNION); |
| 88 | |
| 89 | g_assert(struct_is_simple(info) && |
| 90 | "Don't call simple_struct_has_pointers() on a non-simple struct"); |
| 91 | |
| 92 | typename UnownedInfo<TAG>::FieldsIterator fields = info.fields(); |
| 93 | return std::any_of( |
| 94 | fields.begin(), fields.end(), [](const AutoFieldInfo& field) { |
| 95 | return direct_allocation_has_pointers(field.type_info()); |
| 96 | }); |
| 97 | } |
| 98 | |
| 99 | template <InfoTag TAG> |
| 100 | std::pair<Maybe<ConstructorIndex>, Maybe<ConstructorIndex>> |
no test coverage detected