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.