comparison gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this8.C @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
comparison
equal deleted inserted replaced
111:04ced10e8804 131:84e7813d76e9
4 #include <functional> 4 #include <functional>
5 5
6 struct test { 6 struct test {
7 template<typename T> 7 template<typename T>
8 std::function<void()> broken(int x) { 8 std::function<void()> broken(int x) {
9 return [=] { +x; print<T>(); }; 9 return [=] { +x; print<T>(); }; // { dg-warning "implicit capture" "" { target c++2a } }
10 } 10 }
11 11
12 std::function<void()> works0() { 12 std::function<void()> works0() {
13 return [=] { print<int>(); }; 13 return [=] { print<int>(); }; // { dg-warning "implicit capture" "" { target c++2a } }
14 } 14 }
15 15
16 template<typename T> 16 template<typename T>
17 std::function<void()> works1() { 17 std::function<void()> works1() {
18 return [=] { print<int>(); }; 18 return [=] { print<int>(); }; // { dg-warning "implicit capture" "" { target c++2a } }
19 } 19 }
20 20
21 template<typename T> 21 template<typename T>
22 std::function<void()> works2() { 22 std::function<void()> works2() {
23 return [=] { this->print<T>(); }; 23 return [=] { this->print<T>(); }; // { dg-warning "implicit capture" "" { target c++2a } }
24 } 24 }
25 25
26 template<typename T> 26 template<typename T>
27 void print() { if (this == 0) __builtin_abort (); } 27 void print() { if (this == 0) __builtin_abort (); }
28 }; 28 };