p19.cpp 877 B

12345678910111213141516171819202122232425262728
  1. // RUN: %clang_cc1 -std=c++11 %s -Wunused -verify
  2. struct MoveOnly {
  3. MoveOnly(MoveOnly&&);
  4. MoveOnly(const MoveOnly&);
  5. };
  6. template<typename T> T &&move(T&);
  7. void test_special_member_functions(MoveOnly mo, int i) {
  8. auto lambda1 = [i]() { }; // expected-note 2 {{lambda expression begins here}}
  9. // Default constructor
  10. decltype(lambda1) lambda2; // expected-error{{call to implicitly-deleted default constructor of 'decltype(lambda1)' (aka '<lambda}}
  11. // Copy assignment operator
  12. lambda1 = lambda1; // expected-error{{overload resolution selected implicitly-deleted copy assignment operator}}
  13. // Move assignment operator
  14. lambda1 = move(lambda1);
  15. // Copy constructor
  16. decltype(lambda1) lambda3 = lambda1;
  17. decltype(lambda1) lambda4(lambda1);
  18. // Move constructor
  19. decltype(lambda1) lambda5 = move(lambda1);
  20. decltype(lambda1) lambda6(move(lambda1));
  21. }