34 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s2 3struct NonDefaultConstructible {4 NonDefaultConstructible(const NonDefaultConstructible&); // expected-note{{candidate constructor}}5};6 7template<typename T, typename U>8struct X {9 static T member;10};11 12template<typename T, typename U>13T X<T, U>::member; // expected-error{{no matching constructor}}14 15// Okay; this is a declaration, not a definition.16template<>17NonDefaultConstructible X<NonDefaultConstructible, long>::member;18 19NonDefaultConstructible &test(bool b) {20 return b? X<NonDefaultConstructible, int>::member // expected-note{{instantiation}}21 : X<NonDefaultConstructible, long>::member;22}23 24namespace rdar9422013 {25 template<int>26 struct X {27 struct Inner {28 static unsigned array[17];29 };30 };31 32 template<> unsigned X<1>::Inner::array[]; // okay33}34