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