1 // RUN: %clang_cc1 -fsyntax-only -std=c++1z %s -verify 2 3 class NonCopyable { 4 NonCopyable(const NonCopyable&) = delete; //expected-note3{{explicitly marked deleted here}} 5 int x = 10; 6 void foo() { 7 auto L = [this] { return x; }; 8 const auto &M = [*this] { return x; };//expected-error{{call to deleted}} 9 const auto &M2 = [this] () -> auto&& { 10 ++x; 11 return [*this] { //expected-error{{call to deleted}} expected-warning{{reference to local}} 12 return ++x; //expected-error{{read-only}} 13 }; 14 }; 15 const auto &M3 = [*this] () mutable -> auto&& { //expected-error{{call to deleted}} 16 ++x; 17 return [this] { // expected-warning{{reference to local}} 18 return x; 19 }; 20 }; 21 } 22 }; 23