blob: bc052e35b8b0f7b5bb53fd3e2efdd9eb084751d1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s
struct S {
int *j = &nonexistent; // expected-error {{use of undeclared identifier 'nonexistent'}}
int *m = &n; // ok
int n = f(); // ok
int f();
};
int i = sizeof(S::m); // ok
int j = sizeof(S::m + 42); // ok
struct T {
int n;
static void f() {
int a[n]; // expected-error {{invalid use of member 'n' in static member function}}
int b[sizeof n]; // ok
}
};
// Make sure the rule for unevaluated operands works correctly with typeid.
namespace std {
class type_info;
}
class Poly { virtual ~Poly(); };
const std::type_info& k = typeid(S::m);
const std::type_info& m = typeid(*(Poly*)S::m); // expected-error {{invalid use of nonstatic data member}}
|