1864949bdSRichard Smith // RUN: %clang_cc1 -std=c++2a -verify %s 2864949bdSRichard Smith no_capture()3*793231c3SDavid Blaikievoid no_capture() { 4*793231c3SDavid Blaikie auto x = [] {}; 5*793231c3SDavid Blaikie decltype(x) y; 6*793231c3SDavid Blaikie x = x; 7*793231c3SDavid Blaikie x = static_cast<decltype(x)&&>(x); 8864949bdSRichard Smith } 9864949bdSRichard Smith capture_default(int i)10*793231c3SDavid Blaikievoid capture_default(int i) { 11*793231c3SDavid Blaikie auto x = [=] {}; // expected-note 2{{candidate constructor}} expected-note 2{{lambda expression begins here}} 12*793231c3SDavid Blaikie decltype(x) y; // expected-error {{no matching constructor}} 13*793231c3SDavid Blaikie x = x; // expected-error {{cannot be assigned}} 14*793231c3SDavid Blaikie x = static_cast<decltype(x)&&>(x); // expected-error {{cannot be assigned}} 15864949bdSRichard Smith } 16864949bdSRichard Smith explicit_capture(int i)17*793231c3SDavid Blaikievoid explicit_capture(int i) { 18*793231c3SDavid Blaikie auto x = [i] {}; // expected-note 2{{candidate constructor}} expected-note 2{{lambda expression begins here}} 19*793231c3SDavid Blaikie decltype(x) y; // expected-error {{no matching constructor}} 20*793231c3SDavid Blaikie x = x; // expected-error {{cannot be assigned}} 21*793231c3SDavid Blaikie x = static_cast<decltype(x)&&>(x); // expected-error {{cannot be assigned}} 22864949bdSRichard Smith } 23