p16.cpp revision 999713eea940f4e087cc3ac878689c5c5c7a7225
1// RUN: %clang_cc1 -std=c++11 %s -Wunused -verify
2
3
4struct X {
5  X(const X&) = delete; // expected-note 2{{explicitly marked deleted}}
6  X(X&);
7};
8
9void 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