1 // RUN: %clang_cc1 -fsyntax-only -verify %s 2 // expected-no-diagnostics 3 4 // PR5426 - the non-dependent obj would be fully processed and wrapped in a 5 // CXXConstructExpr at definition time, which would lead to a failure at 6 // instantiation time. 7 struct arg { 8 arg(); 9 }; 10 11 struct oldstylemove { 12 oldstylemove(oldstylemove&); 13 oldstylemove(const arg&); 14 }; 15 16 template <typename T> 17 void fn(T t, const arg& arg) { 18 oldstylemove obj(arg); 19 } 20 21 void test() { 22 fn(1, arg()); 23 } 24 25 struct X0 { }; 26 27 struct X1 { 28 explicit X1(const X0 &x0 = X0()); 29 }; 30 31 template<typename T> 32 void f0() { 33 X1 x1; 34 } 35 36 template void f0<int>(); 37 template void f0<float>(); 38 39 struct NonTrivial { 40 NonTrivial(); 41 ~NonTrivial(); 42 }; 43 44 template<int N> void f1() { 45 NonTrivial array[N]; 46 } 47 template<> void f1<2>(); 48