Add ByMove() modifier for the Return() action.

This commit is contained in:
kosak 2014-11-17 00:55:43 +00:00
parent 6aa0422e85
commit d3d142ef1c

View File

@ -206,7 +206,7 @@
//
// C++11 feature wrappers:
//
// GTEST_MOVE_ - portability wrapper for std::move.
// testing::internal::move - portability wrapper for std::move.
//
// Synchronization:
// Mutex, MutexLock, ThreadLocal, GetThreadCount()
@ -905,12 +905,6 @@ using ::std::tuple_size;
# define GTEST_MUST_USE_RESULT_
#endif // __GNUC__ && (GTEST_GCC_VER_ >= 30400) && !COMPILER_ICC
#if GTEST_HAS_STD_MOVE_
# define GTEST_MOVE_(x) ::std::move(x) // NOLINT
#else
# define GTEST_MOVE_(x) x
#endif
// MS C++ compiler emits warning when a conditional expression is compile time
// constant. In some contexts this warning is false positive and needs to be
// suppressed. Use the following two macros in such cases:
@ -1323,6 +1317,15 @@ inline void FlushInfoLog() { fflush(NULL); }
GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
<< gtest_error
#if GTEST_HAS_STD_MOVE_
using std::move;
#else // GTEST_LANG_CXX11
template <typename T>
const T& move(const T& t) {
return t;
}
#endif // GTEST_HAS_STD_MOVE_
// INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
//
// Use ImplicitCast_ as a safe version of static_cast for upcasting in
@ -1344,7 +1347,7 @@ inline void FlushInfoLog() { fflush(NULL); }
// similar functions users may have (e.g., implicit_cast). The internal
// namespace alone is not enough because the function can be found by ADL.
template<typename To>
inline To ImplicitCast_(To x) { return x; }
inline To ImplicitCast_(To x) { return move(x); }
// When you upcast (that is, cast a pointer from type Foo to type
// SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts