| // RUN: %clang_cc1 -fsyntax-only -std=c++1z %s -verify |
| |
| class NonCopyable { |
| NonCopyable(const NonCopyable&) = delete; //expected-note3{{explicitly marked deleted here}} |
| int x = 10; |
| void foo() { |
| auto L = [this] { return x; }; |
| const auto &M = [*this] { return x; };//expected-error{{call to deleted}} |
| const auto &M2 = [this] () -> auto&& { |
| ++x; |
| return [*this] { //expected-error{{call to deleted}} expected-warning{{reference to local}} |
| return ++x; //expected-error{{read-only}} |
| }; |
| }; |
| const auto &M3 = [*this] () mutable -> auto&& { //expected-error{{call to deleted}} |
| ++x; |
| return [this] { // expected-warning{{reference to local}} |
| return x; |
| }; |
| }; |
| } |
| }; |