187a03625SMalcolm Parsons // RUN: %clang_cc1 -std=c++11 %s -Wunused -Wno-unused-lambda-capture -verify
228be7c5eSDouglas Gregor 
328be7c5eSDouglas Gregor 
428be7c5eSDouglas Gregor struct X {
5fdf598eaSDouglas Gregor   X(const X&) = delete; // expected-note 2{{explicitly marked deleted}}
628be7c5eSDouglas Gregor   X(X&);
728be7c5eSDouglas Gregor };
828be7c5eSDouglas Gregor 
test_capture(X x)928be7c5eSDouglas Gregor void test_capture(X x) {
1028be7c5eSDouglas Gregor   [x] { }(); // okay: non-const copy ctor
1128be7c5eSDouglas Gregor 
1228be7c5eSDouglas Gregor   [x] {
13fdf598eaSDouglas Gregor     [x] { // expected-error{{call to deleted constructor of 'X'}}
14fdf598eaSDouglas Gregor     }();
15fdf598eaSDouglas Gregor   }();
16fdf598eaSDouglas Gregor 
17fdf598eaSDouglas Gregor   [x] {
18fdf598eaSDouglas Gregor     [&x] {
1928be7c5eSDouglas Gregor       [x] { // expected-error{{call to deleted constructor of 'const X'}}
2028be7c5eSDouglas Gregor       }();
2128be7c5eSDouglas Gregor     }();
22fdf598eaSDouglas Gregor   }();
23812d8f63SDouglas Gregor 
24812d8f63SDouglas Gregor   int a;
25fdf598eaSDouglas Gregor   [=] {
26fdf598eaSDouglas Gregor     [&] {
27*1da9e4c9SAnastasia Stulova       int &x = a;  // expected-error{{binding reference of type 'int' to value of type 'const int' drops 'const' qualifier}}
28*1da9e4c9SAnastasia Stulova       int &x2 = a; // expected-error{{binding reference of type 'int' to value of type 'const int' drops 'const' qualifier}}
29fdf598eaSDouglas Gregor     }();
30fdf598eaSDouglas Gregor   }();
31fdf598eaSDouglas Gregor 
32fdf598eaSDouglas Gregor   [=] {
33fdf598eaSDouglas Gregor     [&a] {
34fdf598eaSDouglas Gregor       [&] {
35*1da9e4c9SAnastasia Stulova         int &x = a;  // expected-error{{binding reference of type 'int' to value of type 'const int' drops 'const' qualifier}}
36*1da9e4c9SAnastasia Stulova         int &x2 = a; // expected-error{{binding reference of type 'int' to value of type 'const int' drops 'const' qualifier}}
37fdf598eaSDouglas Gregor       }();
38fdf598eaSDouglas Gregor     }();
39fdf598eaSDouglas Gregor   }();
4028be7c5eSDouglas Gregor }
41