std::move std::move ~= static_cast< T&& >(t)
{"Image DocumentName": "std::move std::move ~= static_cast< T&& >(t)", "Image ImageDescription": "ParticleSystem& operator=( ParticleSystem&& rhs ) { if( this != &rhs ) { mPar = std::move( rhs.mPar ); // Vector move assignment. mTex = std::move( rhs.mTex ); // Texture move assignment. } return  this; std::move ~= static_cast< T&& >(t) Tells compiler: treat this named variable as an rvalue. Highly complex implementation due to reference collapsing, parameter deduction and other arcane language rules. template< class T > inline typename std::remove_reference<T>::type&& move( T&& t ) noexcept { using ReturnType = typename std::remove_reference<T>::type&&; return static_cast< ReturnType >( t ); } rhs is an lvalue! Generates absolutely zero code. Has a great name.", "Image XResolution": "37", "Image YResolution": "37", "Image ResolutionUnit": "Pixels/Centimeter", "Image Software": "SlidePlayer", "Image YCbCrPositioning": "Centered"}