| // PR c++/92948 - Fix class NTTP with template arguments. | |
| // { dg-do compile { target c++20 } } | |
| struct A { | |
| constexpr A(int) { } | |
| }; | |
| template<A> | |
| struct B { | |
| using U = unsigned; | |
| }; | |
| template<A a> | |
| using U = B<a>; | |
| template<int X, typename Y = typename B<X>::U> | |
| void foo() | |
| { | |
| } | |
| template<int X, typename Y = typename U<X>::U> | |
| void foo2() | |
| { | |
| } | |
| template<typename Y = typename B<1>::U> | |
| void foo3() | |
| { | |
| } | |
| void | |
| g () | |
| { | |
| foo<1>(); | |
| foo2<1>(); | |
| foo3<>(); | |
| } |