Issue 91787
Summary [clang][regression][rejects-valid] clang trunk rejecting valid pack expansion
Labels clang
Assignees
Reporter ericniebler
    I believe the following C++20 code should compile:

```c++
template <class...>
concept True = true;

template <bool>
struct I {
 template <template <class...> class F, class... As>
  using f = F<As...>;
};

template <template <class...> class F, class... As>
using meval = I<True<As...>>::template f<F, As...>;

template <class F, class... As>
concept P = true;

template <class F, class... As>
  requires P<F, As...>
using V = void;

template <class...Ts>
auto f() -> meval<V, int, Ts...> {
}

int main() {
  f();
}
```

Clang 18 and earlier accepts it, as does gcc. With clang-trunk, I get:

```
<source>:10:29: error: pack expansion used as argument for non-pack parameter of alias template
   10 | template <template <class...> class F, class... As>
      | ^
1 error generated.
Compiler returned: 1
```

See repro here: https://godbolt.org/z/c1dG74EPd
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to