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