aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/g++.dg/cpp1z/class-deduction12.C
blob: f0d7ea0e16bb516c6d71ad46eb8bacce1c986de9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// { 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