1// RUN: %clang_cc1 -fsyntax-only -verify %s
2
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[]; // okay
33}
34