annotate gcc/testsuite/g++.dg/cpp2a/lambda-this1.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 // P0806R2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 // { dg-do compile }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 // { dg-options "-std=c++2a" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 struct X {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 int x;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 void foo (int n) {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 auto a1 = [=] { x = n; }; // { dg-warning "implicit capture" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 auto a2 = [=, this] { x = n; };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 auto a3 = [=, *this]() mutable { x = n; };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 auto a4 = [&] { x = n; };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 auto a5 = [&, this] { x = n; };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 auto a6 = [&, *this]() mutable { x = n; };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 auto a7 = [=] { // { dg-warning "implicit capture" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 auto a = [=] { // { dg-warning "implicit capture" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 auto a2 = [=] { x = n; }; // { dg-warning "implicit capture" }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 auto a8 = [=, this] {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 auto a = [=, this] {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 auto a2 = [=, this] { x = n; };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 auto a9 = [=, *this]() mutable {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 auto a = [=, *this]() mutable {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 auto a2 = [=, *this]() mutable { x = n; };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 auto a10 = [&] {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 auto a = [&] {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 auto a2 = [&] { x = n; };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 auto a11 = [&, this] {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 auto a = [&, this] {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 auto a2 = [&, this] { x = n; };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 auto a12 = [&, *this]() mutable {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 auto a = [&, *this]() mutable {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 auto a2 = [&, *this]() mutable { x = n; };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 };
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 }
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51 };