// RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
// Check that analysis-based warnings work in lambda bodies.
voidanalysis_based_warnings(){(void)[]()->int{};// expected-warning{{non-void lambda does not return a value}}
}// Check that we get the right types of captured variables (the
// semantic-analysis part of p7).
int&check_const_int(int&);float&check_const_int(constint&);voidtest_capture_constness(inti,constintic){(void)[i,ic]()->void{float&fr1 =check_const_int(i);float&fr2 =check_const_int(ic);};(void)[=]()->void{float&fr1 =check_const_int(i);float&fr2 =check_const_int(ic);};(void)[i,ic]()mutable->void{int&ir =check_const_int(i);float&fr =check_const_int(ic);};(void)[=]()mutable->void{int&ir =check_const_int(i);float&fr =check_const_int(ic);};(void)[&i,&ic]()->void{int&ir =check_const_int(i);float&fr =check_const_int(ic);};(void)[&]()->void{int&ir =check_const_int(i);float&fr =check_const_int(ic);};}structS1{int x, y;
S1 &operator=(int*);intoperator()(int);voidf(){[&]()->int{
S1 &s1 =operator=(&this->x);returnoperator()(this->x+ y);}();}};