Delay defining Group constructor until after UnknownField is a complete type.
C++20 requires that types used in std::vector are complete. Group's constructor definition requires that UnknownFields' destructor be available, which means UnknownField must be complete.
PiperOrigin-RevId: 527341365
diff --git a/upb/util/compare_test.cc b/upb/util/compare_test.cc
index e168f70..634f473 100644
--- a/upb/util/compare_test.cc
+++ b/upb/util/compare_test.cc
@@ -63,7 +63,7 @@
uint32_t val;
};
struct Group {
- Group(std::initializer_list<UnknownField> _val) : val(_val) {}
+ Group(std::initializer_list<UnknownField> _val);
UnknownFields val;
};
@@ -72,6 +72,8 @@
std::variant<Varint, LongVarint, Delimited, Fixed64, Fixed32, Group> value;
};
+Group::Group(std::initializer_list<UnknownField> _val) : val(_val) {}
+
void EncodeVarint(uint64_t val, std::string* str) {
do {
char byte = val & 0x7fU;