diff options
Diffstat (limited to 'test/CXX/expr/expr.prim/expr.prim.lambda/p15-star-this-capture.cpp')
| -rw-r--r-- | test/CXX/expr/expr.prim/expr.prim.lambda/p15-star-this-capture.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/test/CXX/expr/expr.prim/expr.prim.lambda/p15-star-this-capture.cpp b/test/CXX/expr/expr.prim/expr.prim.lambda/p15-star-this-capture.cpp new file mode 100644 index 000000000000..eac6c40c6085 --- /dev/null +++ b/test/CXX/expr/expr.prim/expr.prim.lambda/p15-star-this-capture.cpp @@ -0,0 +1,22 @@ +// 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; + }; + }; + } +}; |
