| // { dg-do compile { target c++17 } } | |
| template <class T> | |
| struct A | |
| { | |
| template<class U, template<U u> class P> | |
| A(T,U,P<42>); | |
| }; | |
| template <int I> struct B { }; | |
| int i; | |
| A a(&i,2,B<42>()); | |
| template <class,class> class same; | |
| template <class T> class same<T,T> {}; | |
| same<decltype(a), A<int*>> s; | |
| #if __cpp_deduction_guides >= 201907 | |
| template <class T> using C = A<const T*>; | |
| same<decltype(C(&i, 2, B<42>())), A<const int*>> t; | |
| #endif |