1 // RUN: %clang_cc1 -std=c++20 -verify %s
4 template<typename
> using IntPtr
= int*;
5 template<typename
...T
> auto non_dependent_typedef() {
6 typedef int(*P
)(IntPtr
<T
>...);
9 template<typename
...T
> auto non_dependent_alias() {
10 using P
= int(*)(IntPtr
<T
>...);
13 template<typename
...T
> auto non_dependent_via_sizeof() {
14 using P
= int(*)(int(...pack
)[sizeof(sizeof(T
))]); // expected-error {{invalid application of 'sizeof'}}
18 using a
= int (*)(int*, int*);
19 using a
= decltype(non_dependent_typedef
<void, void>());
20 using a
= decltype(non_dependent_alias
<void, void>());
21 using a
= decltype(non_dependent_via_sizeof
<float, float>());
23 using b
= decltype(non_dependent_via_sizeof
<float, void>()); // expected-note {{instantiation of}}