29 lines · cpp
1// RUN: %clang_cc1 -std=c++11 %s -Wunused -Wno-unused-lambda-capture -verify2 3struct MoveOnly {4 MoveOnly(MoveOnly&&);5 MoveOnly(const MoveOnly&);6};7 8template<typename T> T &&move(T&);9void 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 constructor13 decltype(lambda1) lambda2; // expected-error{{no matching constructor}}14 15 // Copy assignment operator16 lambda1 = lambda1; // expected-error{{copy assignment operator is implicitly deleted}}17 18 // Move assignment operator19 lambda1 = move(lambda1); // expected-error{{copy assignment operator is implicitly deleted}}20 21 // Copy constructor22 decltype(lambda1) lambda3 = lambda1;23 decltype(lambda1) lambda4(lambda1);24 25 // Move constructor26 decltype(lambda1) lambda5 = move(lambda1);27 decltype(lambda1) lambda6(move(lambda1));28}29