https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107417
Bug ID: 107417 Summary: g++ fails to recognize parameter pack in requires-expression Product: gcc Version: 13.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: jwjagersma at gmail dot com Target Milestone: --- Given the following code: $ cat fold.cpp template<typename... T> requires (requires (T x) { x; } and ...) auto func(T...) { } g++ seems to forget that T is a parameter pack: $ g++ -std=c++20 fold.cpp fold.cpp:2:11: error: operand of fold expression has no unexpanded parameter packs 2 | requires (requires (T x) { x; } and ...) | ^~~~~~~~~~~~~~~~~~~~~ This issue is present on both 12.2 and latest 13.0. Clang and msvc do accept it.