From 9518a57428ae0a7ed450c1361768e84a2a38af5a Mon Sep 17 00:00:00 2001 From: Abseil Team Date: Thu, 17 Jan 2019 15:56:41 -0500 Subject: Googletest export Fix mocking method arguments with templated copy constructors. A previous change removed workarounds for old compilers from googletest and googlemock. Unfortunately, a bit of code that started as a workaround for Symbian's C++ compiler is still needed to avoid copy/move constructor ambiguity when mocking functions with certain argument types. The test case added by this CL is extracted from Chrome's codebase, and was discovered while attempting to roll googletest. PiperOrigin-RevId: 229801765 --- googlemock/include/gmock/gmock-spec-builders.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'googlemock/include') diff --git a/googlemock/include/gmock/gmock-spec-builders.h b/googlemock/include/gmock/gmock-spec-builders.h index 526fe7aa..9a81cfbc 100644 --- a/googlemock/include/gmock/gmock-spec-builders.h +++ b/googlemock/include/gmock/gmock-spec-builders.h @@ -300,7 +300,10 @@ class OnCallSpec : public UntypedOnCallSpecBase { const ArgumentMatcherTuple& matchers) : UntypedOnCallSpecBase(a_file, a_line), matchers_(matchers), - extra_matcher_(_) {} + // By default, extra_matcher_ should match anything. However, + // we cannot initialize it with _ as that causes ambiguity between + // Matcher's copy and move constructor for some argument types. + extra_matcher_(A()) {} // Implements the .With() clause. OnCallSpec& With(const Matcher& m) { @@ -890,7 +893,10 @@ class TypedExpectation : public ExpectationBase { : ExpectationBase(a_file, a_line, a_source_text), owner_(owner), matchers_(m), - extra_matcher_(_), + // By default, extra_matcher_ should match anything. However, + // we cannot initialize it with _ as that causes ambiguity between + // Matcher's copy and move constructor for some argument types. + extra_matcher_(A()), repeated_action_(DoDefault()) {} ~TypedExpectation() override { -- cgit v1.2.3