1 // RUN: %clang_cc1 -std=c++2a -x c++ %s -verify 2 // expected-no-diagnostics 3 4 template<typename T, typename U=void> 5 concept C = true; 6 7 namespace ns { 8 template<typename T, typename U=void> 9 concept D = true; 10 } 11 12 void foo1(C auto a, 13 C<int> auto b, 14 ns::D auto c, 15 ns::D<int> auto d, 16 const C auto e, 17 const C<int> auto f, 18 const ns::D auto g, 19 const ns::D<int> auto h); 20 void foo2(C auto a); 21 void foo3(C<int> auto b); 22 void foo4(ns::D auto c); 23 void foo5(ns::D<int> auto d); 24 void foo6(const C auto e); 25 void foo7(const C<int> auto f); 26 void foo8(const ns::D auto g); 27 void foo9(const ns::D<int> auto h); 28 29 struct S1 { S1(C auto a, 30 C<int> auto b, 31 ns::D auto c, 32 ns::D<int> auto d, 33 const C auto e, 34 const C<int> auto f, 35 const ns::D auto g, 36 const ns::D<int> auto h); }; 37 struct S2 { S2(C auto a); }; 38 struct S3 { S3(C<int> auto b); }; 39 struct S4 { S4(ns::D auto c); }; 40 struct S5 { S5(ns::D<int> auto d); }; 41 struct S6 { S6(const C auto e); }; 42 struct S7 { S7(const C<int> auto f); }; 43 struct S8 { S8(const ns::D auto g); }; 44 struct S9 { S9(const ns::D<int> auto h); };