googletest/googlemock/include/gmock
Arthur O'Dwyer 4f002f1e23 VariadicMatcher needs a non-defaulted move constructor for compile-time performance.
We are about to remove all uses of GTEST_DISALLOW_ASSIGN_ in favor
of using the Rule of Zero everywhere.

Unfortunately, if we use the Rule of Zero here, then when the compiler
needs to figure out if VariadicMatcher is move-constructible, it will
recurse down into `tuple<Args...>`, which on libstdc++ recurses too deeply.

    In file included from googlemock/test/gmock-matchers_test.cc:43:
    In file included from googlemock/include/gmock/gmock-matchers.h:258:
    In file included from /usr/include/c++/5.5.0/algorithm:60:
    In file included from /usr/include/c++/5.5.0/utility:70:
    In file included from /usr/include/c++/5.5.0/bits/stl_pair.h:59:
    In file included from /usr/include/c++/5.5.0/bits/move.h:57:
    /usr/bin/include/c++/5.5.0/type_traits:115:26: fatal error:
          recursive template instantiation exceeded maximum depth of 256
        : public conditional<_B1::value, _B1, _B2>::type
                             ^

The move constructor is the only problematic case, for some unknown reason.
With GTEST_DISALLOW_ASSIGN_, the presence of a copy assignment operator
causes the move constructor to be non-declared, thus non-defaulted, thus
non-problematic. Without GTEST_DISALLOW_ASSIGN_, we have to do one of the
following:

- Default the copy constructor, so that the move constructor will be non-declared.

- Define our own non-defaulted move constructor.

...except that doing the latter STILL did not work!
Fortunately, the former (default the copy constructor, don't provide
any move constructor) both works in practice and is semantically
equivalent to the old code.
2020-04-16 19:12:52 -04:00
..
internal Googletest export 2020-02-07 18:20:45 -05:00
gmock-actions.h Googletest export 2020-03-31 19:23:38 -04:00
gmock-cardinalities.h restore mistakenly removed iffs in their explicit form 2019-08-20 12:14:22 +02:00
gmock-function-mocker.h Googletest export 2020-02-07 13:35:27 -05:00
gmock-generated-actions.h Googletest export 2020-01-16 13:56:12 -05:00
gmock-generated-actions.h.pump Googletest export 2020-01-16 13:56:12 -05:00
gmock-matchers.h VariadicMatcher needs a non-defaulted move constructor for compile-time performance. 2020-04-16 19:12:52 -04:00
gmock-more-actions.h remove a custom implementation of std::is_reference 2019-08-14 13:33:13 +02:00
gmock-more-matchers.h Googletest export 2020-02-07 18:20:45 -05:00
gmock-nice-strict.h Googletest export 2018-12-21 11:30:20 -05:00
gmock-spec-builders.h Merge pull request #2350 from adambadura:MockFunctionFromStdFunction 2020-03-24 17:32:16 -04:00
gmock.h Googletest export 2020-02-07 18:20:45 -05:00