/**
* MoveTemp will cast a reference to an rvalue reference.
* This is UE's equivalent of std::move except that it will not compile when passed an rvalue or
* const object, because we would prefer to be informed when MoveTemp will have no effect.
*/template<typename T>
FORCEINLINE typename TRemoveReference<T>::Type&&MoveTemp(T&& Obj){typedeftypename TRemoveReference<T>::Type CastType;// Validate that we're not being passed an rvalue or a const object - the former is redundant, the latter is almost certainly a mistakestatic_assert(TIsLValueReferenceType<T>::Value,"MoveTemp called on an rvalue");static_assert(!TAreTypesEqual<CastType&,const CastType&>::Value,"MoveTemp called on a const object");return(CastType&&)Obj;}