brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · f5daa79 Raw
68 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s2// expected-no-diagnostics3 4// PR5426 - the non-dependent obj would be fully processed and wrapped in a5// CXXConstructExpr at definition time, which would lead to a failure at6// 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 49namespace PR20346 {50  struct S { short inner_s; };51 52  struct outer_struct {53    wchar_t arr[32];54    S outer_s;55  };56 57  template <class T>58  void OpenFileSession() {59    // Ensure that we don't think the ImplicitValueInitExpr generated here60    // during the initial parse only initializes the first array element!61    outer_struct asdfasdf = {};62  };63 64  void foo() {65    OpenFileSession<int>();66  }67}68