1 // { dg-do compile { target c++17 } }
2 
3 template <class T> struct A { };
4 
5 A<int> a;
6 const A c = a;
7 volatile A v = a;
8 const volatile A cv = a;
9 
10 template <class,class> struct same;
11 template <class T> struct same<T,T> {};
12 
13 same<decltype(c), const A<int>> s1;
14 same<decltype(v), volatile A<int>> s2;
15 same<decltype(cv), const volatile A<int>> s3;
16