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.

Reply via email to