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
pull/13171/head
Protobuf Team Bot 2 years ago committed by Copybara-Service
parent 22229bcaf9
commit b32938176d
  1. 4
      upb/util/compare_test.cc

@ -63,7 +63,7 @@ struct Fixed32 {
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 @@ struct UnknownField {
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;

Loading…
Cancel
Save