Home | History | Annotate | Download | only in expr.prim.lambda
      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 value of type 'const int' to reference to type 'int' drops 'const' qualifier}}
     28       int &x2 = a;  // expected-error{{binding value of type 'const int' to reference to type 'int' drops 'const' qualifier}}
     29     }();
     30   }();
     31 
     32   [=]{
     33     [&a] {
     34       [&] {
     35         int &x = a;  // expected-error{{binding value of type 'const int' to reference to type 'int' drops 'const' qualifier}}
     36         int &x2 = a;  // expected-error{{binding value of type 'const int' to reference to type 'int' drops 'const' qualifier}}
     37       }();
     38     }();
     39   }();
     40 }
     41