1 // RUN: %clang_cc1 -fsyntax-only -Wself-move -std=c++11 -verify %s
3 // definitions for std::move
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
; };
10 template <class T
> typename remove_reference
<T
>::type
&&move(T
&&t
);
16 x
= std::move(x
); // expected-warning{{explicitly moving}}
17 (x
) = std::move(x
); // expected-warning{{explicitly moving}}
20 x
= move(x
); // expected-warning{{explicitly moving}}
24 void global_int_test() {
25 global
= std::move(global
); // expected-warning{{explicitly moving}}
26 (global
) = std::move(global
); // expected-warning{{explicitly moving}}
29 global
= move(global
); // expected-warning{{explicitly moving}}
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}}
44 struct C
{ C() {}; ~C() {} };
47 a
= std::move(a
); // expected-warning{{explicitly moving}}
50 b
= std::move(b
); // expected-warning{{explicitly moving}}
51 b
.a
= std::move(b
.a
); // expected-warning{{explicitly moving}}
54 c
= std::move(c
); // expected-warning{{explicitly moving}}