Home | History | Annotate | Download | only in SemaCXX
      1 // RUN: %clang_cc1 -fsyntax-only -Wself-move -std=c++11 -verify %s
      2 
      3 // definitions for std::move
      4 namespace std {
      5 inline namespace foo {
      6 template <class T> struct remove_reference { typedef T type; };
      7 template <class T> struct remove_reference<T&> { typedef T type; };
      8 template <class T> struct remove_reference<T&&> { typedef T type; };
      9 
     10 template <class T> typename remove_reference<T>::type &&move(T &&t);
     11 }
     12 }
     13 
     14 void int_test() {
     15   int x = 5;
     16   x = std::move(x);  // expected-warning{{explicitly moving}}
     17   (x) = std::move(x);  // expected-warning{{explicitly moving}}
     18 
     19   using std::move;
     20   x = move(x);  // expected-warning{{explicitly moving}}
     21 }
     22 
     23 int global;
     24 void global_int_test() {
     25   global = std::move(global);  // expected-warning{{explicitly moving}}
     26   (global) = std::move(global);  // expected-warning{{explicitly moving}}
     27 
     28   using std::move;
     29   global = move(global);  // expected-warning{{explicitly moving}}
     30 }
     31 
     32 class field_test {
     33   int x;
     34   field_test(field_test&& other) {
     35     x = std::move(x);  // expected-warning{{explicitly moving}}
     36     x = std::move(other.x);
     37     other.x = std::move(x);
     38     other.x = std::move(other.x);  // expected-warning{{explicitly moving}}
     39   }
     40 };
     41 
     42 struct A {};
     43 struct B { A a; };
     44 struct C { C() {}; ~C() {} };
     45 void struct_test() {
     46   A a;
     47   a = std::move(a);  // expected-warning{{explicitly moving}}
     48 
     49   B b;
     50   b = std::move(b);  // expected-warning{{explicitly moving}}
     51   b.a = std::move(b.a);  // expected-warning{{explicitly moving}}
     52 
     53   C c;
     54   c = std::move(c);  // expected-warning{{explicitly moving}}
     55 }
     56