Add ByMove() modifier for the Return() action. Pull in gtest 695.

This commit is contained in:
kosak
2014-11-17 00:56:52 +00:00
parent 5b9cbbb16d
commit 3d1c78b2bf
3 changed files with 93 additions and 19 deletions

View File

@@ -1302,15 +1302,12 @@ template <typename T>
class ReferenceOrValueWrapper {
public:
// Constructs a wrapper from the given value/reference.
explicit ReferenceOrValueWrapper(T value)
: value_(GTEST_MOVE_(value)) {}
explicit ReferenceOrValueWrapper(T value) : value_(move(value)) {}
// Unwraps and returns the underlying value/reference, exactly as
// originally passed. The behavior of calling this more than once on
// the same object is unspecified.
T Unwrap() {
return GTEST_MOVE_(value_);
}
T Unwrap() { return move(value_); }
// Provides nondestructive access to the underlying value/reference.
// Always returns a const reference (more precisely,
@@ -1407,8 +1404,7 @@ class ActionResultHolder : public UntypedActionResultHolderBase {
private:
typedef ReferenceOrValueWrapper<T> Wrapper;
explicit ActionResultHolder(Wrapper result)
: result_(GTEST_MOVE_(result)) {}
explicit ActionResultHolder(Wrapper result) : result_(move(result)) {}
Wrapper result_;