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. 7struct arg { 8 arg(); 9}; 10 11struct oldstylemove { 12 oldstylemove(oldstylemove&); 13 oldstylemove(const arg&); 14}; 15 16template <typename T> 17void fn(T t, const arg& arg) { 18 oldstylemove obj(arg); 19} 20 21void test() { 22 fn(1, arg()); 23} 24 25struct X0 { }; 26 27struct X1 { 28 explicit X1(const X0 &x0 = X0()); 29}; 30 31template<typename T> 32void f0() { 33 X1 x1; 34} 35 36template void f0<int>(); 37template void f0<float>(); 38 39struct NonTrivial { 40 NonTrivial(); 41 ~NonTrivial(); 42}; 43 44template<int N> void f1() { 45 NonTrivial array[N]; 46} 47template<> void f1<2>(); 48