[clang] [clang] Finish implementation of P0522 (PR #96023)

via cfe-commits cfe-commits at lists.llvm.org
Fri Oct 4 02:07:19 PDT 2024


zmodem wrote:

We're hitting a new error after this change. I'm not familiar with P0522, can you confirm whether `foo(bad)` is supposed to work or not?

```
template <template <typename T, typename... Ms> typename H, typename T, typename... Ms>
void foo(H<T, Ms...> h) {}

template <typename T, typename... Ms> class Good {};

template <typename T> class Bad {};

void bar() {
  // This works.
  Good<int> good;
  foo(good);

  // This used to work, but no longer.
  Bad<int> bad;
  foo(bad);
}
```

(For what it's worth, GCC and MSVC still accept both variants: https://godbolt.org/z/zEhhfa6GW)

https://github.com/llvm/llvm-project/pull/96023


More information about the cfe-commits mailing list