diff options
author | Krystian Kuzniarek <krystian.kuzniarek@gmail.com> | 2019-08-14 12:21:32 (GMT) |
---|---|---|
committer | Krystian Kuzniarek <krystian.kuzniarek@gmail.com> | 2019-08-14 12:21:32 (GMT) |
commit | 6a015ca1cb4e9d62126f931e5cfcd8e4d2171ded (patch) | |
tree | fdef2293e1e333b1543ee940b6665e703569b2fb | |
parent | 90a443f9c2437ca8a682a1ac625eba64e1d74a8a (diff) | |
download | googletest-6a015ca1cb4e9d62126f931e5cfcd8e4d2171ded.zip googletest-6a015ca1cb4e9d62126f931e5cfcd8e4d2171ded.tar.gz googletest-6a015ca1cb4e9d62126f931e5cfcd8e4d2171ded.tar.bz2 |
reuse IndexSequence from googletestrefs/pull/2394/head
-rw-r--r-- | googlemock/include/gmock/internal/gmock-internal-utils.h | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/googlemock/include/gmock/internal/gmock-internal-utils.h b/googlemock/include/gmock/internal/gmock-internal-utils.h index ee00479..273c7c0 100644 --- a/googlemock/include/gmock/internal/gmock-internal-utils.h +++ b/googlemock/include/gmock/internal/gmock-internal-utils.h @@ -506,19 +506,8 @@ struct BooleanConstant {}; // reduce code size. GTEST_API_ void IllegalDoDefault(const char* file, int line); -// Helper types for Apply() below. -template <size_t... Is> struct int_pack { typedef int_pack type; }; - -template <class Pack, size_t I> struct append; -template <size_t... Is, size_t I> -struct append<int_pack<Is...>, I> : int_pack<Is..., I> {}; - -template <size_t C> -struct make_int_pack : append<typename make_int_pack<C - 1>::type, C - 1> {}; -template <> struct make_int_pack<0> : int_pack<> {}; - template <typename F, typename Tuple, size_t... Idx> -auto ApplyImpl(F&& f, Tuple&& args, int_pack<Idx...>) -> decltype( +auto ApplyImpl(F&& f, Tuple&& args, IndexSequence<Idx...>) -> decltype( std::forward<F>(f)(std::get<Idx>(std::forward<Tuple>(args))...)) { return std::forward<F>(f)(std::get<Idx>(std::forward<Tuple>(args))...); } @@ -527,9 +516,9 @@ auto ApplyImpl(F&& f, Tuple&& args, int_pack<Idx...>) -> decltype( template <typename F, typename Tuple> auto Apply(F&& f, Tuple&& args) -> decltype(ApplyImpl(std::forward<F>(f), std::forward<Tuple>(args), - make_int_pack<std::tuple_size<Tuple>::value>())) { + MakeIndexSequence<std::tuple_size<Tuple>::value>())) { return ApplyImpl(std::forward<F>(f), std::forward<Tuple>(args), - make_int_pack<std::tuple_size<Tuple>::value>()); + MakeIndexSequence<std::tuple_size<Tuple>::value>()); } // Template struct Function<F>, where F must be a function type, contains |