1 // RUN: %clang_cc1 -std=c++11 %s -Wunused -verify
2 
3 
4 struct X {
5   X(const X&) = delete; // expected-note 2{{explicitly marked deleted}}
6   X(X&);
7 };
8 
9 void test_capture(X x) {
10   [x] { }(); // okay: non-const copy ctor
11 
12   [x] {
13     [x] { // expected-error{{call to deleted constructor of 'X'}}
14     }();
15   }();
16 
17   [x] {
18     [&x] {
19       [x] { // expected-error{{call to deleted constructor of 'const X'}}
20       }();
21     }();
22   }();
23 
24   int a;
25   [=]{
26     [&] {
27       int &x = a;  // expected-error{{binding of reference to type 'int' to a value of type 'const int' drops qualifiers}}
28       int &x2 = a;  // expected-error{{binding of reference to type 'int' to a value of type 'const int' drops qualifiers}}
29     }();
30   }();
31 
32   [=]{
33     [&a] {
34       [&] {
35         int &x = a;  // expected-error{{binding of reference to type 'int' to a value of type 'const int' drops qualifiers}}
36         int &x2 = a;  // expected-error{{binding of reference to type 'int' to a value of type 'const int' drops qualifiers}}
37       }();
38     }();
39   }();
40 }
41