1 | // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s |
2 | |
3 | struct S { |
4 | S *p = this; // ok |
5 | decltype(this) q; // expected-error {{invalid use of 'this' outside of a non-static member function}} |
6 | |
7 | int arr[sizeof(this)]; // expected-error {{invalid use of 'this' outside of a non-static member function}} |
8 | int sz = sizeof(this); // ok |
9 | |
10 | typedef auto f() -> decltype(this); // expected-error {{invalid use of 'this' outside of a non-static member function}} |
11 | }; |
12 | |
13 | namespace CaptureThis { |
14 | struct X { |
15 | int n = 10; |
16 | int m = [&]{return n + 1; }(); |
17 | int o = [&]{return this->m + 1; }(); |
18 | int p = [&]{return [&](int x) { return this->m + x;}(o); }(); |
19 | }; |
20 | |
21 | X x; |
22 | } |
23 | |