diff options
author | kosak <kosak@google.com> | 2014-11-17 00:55:43 +0000 |
---|---|---|
committer | kosak <kosak@google.com> | 2014-11-17 00:55:43 +0000 |
commit | d3d142ef1cc4956307d3a248e52b9f826f305048 (patch) | |
tree | 7e8a9c7346b7ada6847b3af094419319ccfc5cad | |
parent | 6aa0422e8529d76385b64f0a826f5ffd353fd37b (diff) | |
download | googletest-d3d142ef1cc4956307d3a248e52b9f826f305048.tar.gz googletest-d3d142ef1cc4956307d3a248e52b9f826f305048.tar.bz2 googletest-d3d142ef1cc4956307d3a248e52b9f826f305048.zip |
Add ByMove() modifier for the Return() action.
-rw-r--r-- | include/gtest/internal/gtest-port.h | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/include/gtest/internal/gtest-port.h b/include/gtest/internal/gtest-port.h index 17220a5a..6c2150df 100644 --- a/include/gtest/internal/gtest-port.h +++ b/include/gtest/internal/gtest-port.h @@ -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 |