56 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -fsyntax-only -Wself-move -std=c++11 -verify %s
 | |
| 
 | |
| // definitions for std::move
 | |
| namespace std {
 | |
| inline namespace foo {
 | |
| template <class T> struct remove_reference { typedef T type; };
 | |
| template <class T> struct remove_reference<T&> { typedef T type; };
 | |
| template <class T> struct remove_reference<T&&> { typedef T type; };
 | |
| 
 | |
| template <class T> typename remove_reference<T>::type &&move(T &&t);
 | |
| }
 | |
| }
 | |
| 
 | |
| void int_test() {
 | |
|   int x = 5;
 | |
|   x = std::move(x);  // expected-warning{{explicitly moving}}
 | |
|   (x) = std::move(x);  // expected-warning{{explicitly moving}}
 | |
| 
 | |
|   using std::move;
 | |
|   x = move(x);  // expected-warning{{explicitly moving}}
 | |
| }
 | |
| 
 | |
| int global;
 | |
| void global_int_test() {
 | |
|   global = std::move(global);  // expected-warning{{explicitly moving}}
 | |
|   (global) = std::move(global);  // expected-warning{{explicitly moving}}
 | |
| 
 | |
|   using std::move;
 | |
|   global = move(global);  // expected-warning{{explicitly moving}}
 | |
| }
 | |
| 
 | |
| class field_test {
 | |
|   int x;
 | |
|   field_test(field_test&& other) {
 | |
|     x = std::move(x);  // expected-warning{{explicitly moving}}
 | |
|     x = std::move(other.x);
 | |
|     other.x = std::move(x);
 | |
|     other.x = std::move(other.x);  // expected-warning{{explicitly moving}}
 | |
|   }
 | |
| };
 | |
| 
 | |
| struct A {};
 | |
| struct B { A a; };
 | |
| struct C { C() {}; ~C() {} };
 | |
| void struct_test() {
 | |
|   A a;
 | |
|   a = std::move(a);  // expected-warning{{explicitly moving}}
 | |
| 
 | |
|   B b;
 | |
|   b = std::move(b);  // expected-warning{{explicitly moving}}
 | |
|   b.a = std::move(b.a);  // expected-warning{{explicitly moving}}
 | |
| 
 | |
|   C c;
 | |
|   c = std::move(c);  // expected-warning{{explicitly moving}}
 | |
| }
 |