]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CXX/expr/expr.prim/expr.prim.lambda/p19.cpp
Vendor import of clang trunk r300422:
[FreeBSD/FreeBSD.git] / test / CXX / expr / expr.prim / expr.prim.lambda / p19.cpp
1 // RUN: %clang_cc1 -std=c++11 %s -Wunused -Wno-unused-lambda-capture -verify
2
3 struct MoveOnly {
4   MoveOnly(MoveOnly&&);
5   MoveOnly(const MoveOnly&);
6 };
7
8 template<typename T> T &&move(T&);
9 void test_special_member_functions(MoveOnly mo, int i) {
10   auto lambda1 = [i]() { }; // expected-note 2{{lambda expression begins here}} expected-note 2{{candidate}}
11
12   // Default constructor
13   decltype(lambda1) lambda2; // expected-error{{no matching constructor}}
14
15   // Copy assignment operator
16   lambda1 = lambda1; // expected-error{{copy assignment operator is implicitly deleted}}
17
18   // Move assignment operator
19   lambda1 = move(lambda1); // expected-error{{copy assignment operator is implicitly deleted}}
20
21   // Copy constructor
22   decltype(lambda1) lambda3 = lambda1;
23   decltype(lambda1) lambda4(lambda1);
24
25   // Move constructor
26   decltype(lambda1) lambda5 = move(lambda1);
27   decltype(lambda1) lambda6(move(lambda1));
28 }