envoyproxy / envoyproxy/envoy

Due to "requires" keyword, C++ files generated from config.proto do not compile with C++20

Open
#21,010 12 comments 1 reaction 0 assignees View on GitHub
area/build bug no stalebot
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.