1 // RUN: %clang_cc1 -fsyntax-only -std=c++11 %s -verify
2 
3 class NonCopyable {
4   NonCopyable(const NonCopyable&); // expected-note 2 {{implicitly declared private here}}
5 };
6 
7 void capture_by_copy(NonCopyable nc, NonCopyable &ncr) {
8   // FIXME: error messages should talk about capture
9   (void)[nc] { }; // expected-error{{field of type 'NonCopyable' has private copy constructor}} \
10              // expected-error{{lambda expressions are not supported yet}}
11   (void)[ncr] { }; // expected-error{{field of type 'NonCopyable' has private copy constructor}} \
12              // expected-error{{lambda expressions are not supported yet}}
13 }
14 
15 struct NonTrivial {
16   NonTrivial();
17   NonTrivial(const NonTrivial &);
18   ~NonTrivial();
19 };
20 
21 struct CopyCtorDefault {
22   CopyCtorDefault(const CopyCtorDefault&, NonTrivial nt = NonTrivial());
23 
24   void foo() const;
25 };
26 
27 void capture_with_default_args(CopyCtorDefault cct) {
28   (void)[=] () -> void { cct.foo(); }; // expected-error{{lambda expressions are not supported yet}}
29 }
30 
31 // FIXME: arrays!
32 
33 // Check for the expected non-static data members.
34 
35 struct ExpectedLayout {
36   char a;
37   short b;
38 };
39 
40 template<typename T> void capture(const T&);
41 
42 void test_layout(char a, short b) {
43   auto x = [=] () -> void { // expected-error{{lambda expressions are not supported yet}}
44     capture(a);
45     capture(b);
46   };
47   static_assert(sizeof(x) == sizeof(ExpectedLayout), "Layout mismatch!");
48 }
49