Due to "requires" keyword, C++ files generated from config.proto do not compile with C++20
- Dominant language
- C++
- Stars
- 28.9k
- Forks
- 5.6k
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 428
Description
*Title*: Due to the "requires" keyword, C++ files generated from config.proto do not compile with C++20
*Description*:
We've compiled generated headers from config.proto:
https://github.com/envoyproxy/envoy/blob/main/api/envoy/config/filter/http/jwt_authn/v2alpha/config.proto#L368
But one of the fields is **requires** which is a keyword from C++20, which when compiled with gcc9.3 with -std=c++20 leads to:
> config.pb.h:1613:76: error: expected member name or ';' after declaration specifiers
> const ::envoy::extensions::filters::http::jwt_authn::v3::JwtRequirement& requires() const;
>
> config.pb.h:1613:85: error: expected expression
> const ::envoy::extensions::filters::http::jwt_authn::v3::JwtRequirement& requires() const;
>
> config.pb.h:1613:76: error: trailing requires clause can only be used when declaring a function
> const ::envoy::extensions::filters::http::jwt_authn::v3::JwtRequirement& requires() const;
>
> config.pb.h:1616:98: error: trailing requires clause can only be used when declaring a function
> void set_allocated_requires(::envoy::extensions::filters::http::jwt_authn::v3::JwtRequirement* requires);
>
> config.pb.h:1616:106: error: expected expression
> void set_allocated_requires(::envoy::extensions::filters::http::jwt_authn::v3::JwtRequirement* requires);
>
> config.pb.h:1773:7: error: expected member name or ';' after declaration specifiers
> requires() const;
>
> config.pb.h:1773:16: error: expected expression
> requires() const;
>
> config.pb.h:1773:7: error: trailing requires clause can only be used when declaring a function
> requires() const;
>
> config.pb.h:3732:98: error: expected unqualified-id
> inline const ::envoy::extensions::filters::http::jwt_authn::v3::JwtRequirement& RequirementRule::requires() const {
>
> config.pb.h:3918:18: error: expected unqualified-id
> FilterStateRule::requires() const {
>
> config.pb.cc:4183:113: error: trailing requires clause can only be used when declaring a function
> void RequirementRule::set_allocated_requires(::envoy::extensions::filters::http::jwt_authn::v3::JwtRequirement* requires) {
>
> config.pb.cc:4183:121: error: expected expression
> void RequirementRule::set_allocated_requires(::envoy::extensions::filters::http::jwt_authn::v3::JwtRequirement* requires) {
>
> config.pb.cc:4186:15: error: expected '{'
> if (requires) {
> {
> config.pb.cc:4189:15: error: expected '{'
> requires = ::google::protobuf::internal::GetOwnedMessage(
>
> {
> config.pb.cc:4190:34: error: expected '{'
> message_arena, requires, submessage_arena);
> {
> config.pb.cc:4193:43: error: expected '{'
> requirement_type_.requires_ = requires;
>
> {
> config.pb.cc:4222:109: error: expected unqualified-id
> mutable_requires()->::envoy::extensions::filters::http::jwt_authn::v3::JwtRequirement::MergeFrom(from.requires());
>
> config.pb.cc:4512:109: error: expected unqualified-id
> mutable_requires()->::envoy::extensions::filters::http::jwt_authn::v3::JwtRequirement::MergeFrom(from.requires());
>
> config.pb.cc:4730:14: error: expected unqualified-id
> if (!this->requires().empty()) {
Contributor guide
Assessment
This issue has not been assessed yet.