1 // { dg-do compile { target c++11 } }
2 // { dg-options "-Wpessimizing-move" }
7 struct remove_reference
10 template<typename _Tp>
11 struct remove_reference<_Tp&>
12 { typedef _Tp type; };
14 template<typename _Tp>
15 struct remove_reference<_Tp&&>
16 { typedef _Tp type; };
18 template<typename _Tp>
19 constexpr typename std::remove_reference<_Tp>::type&&
20 move(_Tp&& __t) noexcept
21 { return static_cast<typename std::remove_reference<_Tp>::type&&>(__t); }
29 return {std::move(S())}; // { dg-warning "moving a temporary object prevents copy elision" }