// 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;
};
};
}
};