Remove all uses of GTEST_DISALLOW_{MOVE_,}ASSIGN_.
None of these are strictly needed for correctness. A large number of them (maybe all of them?) trigger `-Wdeprecated` warnings on Clang trunk as soon as you try to use the implicitly defaulted (but deprecated) copy constructor of a class that has deleted its copy assignment operator. By declaring a deleted copy assignment operator, the old code also caused the move constructor and move assignment operator to be non-declared. This means that the old code never got move semantics -- "move-construction" would simply call the defaulted (but deprecated) copy constructor instead. With the new code, "move-construction" calls the defaulted move constructor, which I believe is what we want to happen. So this is a runtime performance optimization. Unfortunately we can't yet physically remove the definitions of these macros from gtest-port.h, because they are being used by other code internally at Google (according to zhangxy988). But no new uses should be added going forward.
This commit is contained in:
@@ -575,8 +575,6 @@ class FromType {
|
||||
|
||||
private:
|
||||
bool* const converted_;
|
||||
|
||||
GTEST_DISALLOW_ASSIGN_(FromType);
|
||||
};
|
||||
|
||||
class ToType {
|
||||
|
||||
@@ -3746,17 +3746,11 @@ struct AStruct {
|
||||
const double y; // A const field.
|
||||
Uncopyable z; // An uncopyable field.
|
||||
const char* p; // A pointer field.
|
||||
|
||||
private:
|
||||
GTEST_DISALLOW_ASSIGN_(AStruct);
|
||||
};
|
||||
|
||||
// A derived struct for testing Field().
|
||||
struct DerivedStruct : public AStruct {
|
||||
char ch;
|
||||
|
||||
private:
|
||||
GTEST_DISALLOW_ASSIGN_(DerivedStruct);
|
||||
};
|
||||
|
||||
// Tests that Field(&Foo::field, ...) works when field is non-const.
|
||||
|
||||
Reference in New Issue
Block a user