|
|
@ -526,9 +526,10 @@ |
|
|
|
GMOCK_INTERNAL_LIST_##value_params)){}) \
|
|
|
|
GMOCK_INTERNAL_LIST_##value_params)){}) \
|
|
|
|
GMOCK_ACTION_CLASS_(name, value_params)(const GMOCK_ACTION_CLASS_( \
|
|
|
|
GMOCK_ACTION_CLASS_(name, value_params)(const GMOCK_ACTION_CLASS_( \
|
|
|
|
name, value_params) &) noexcept GMOCK_INTERNAL_DEFN_COPY_ \
|
|
|
|
name, value_params) &) noexcept GMOCK_INTERNAL_DEFN_COPY_ \
|
|
|
|
##value_params GMOCK_ACTION_CLASS_(name, value_params)( \ |
|
|
|
##value_params \ |
|
|
|
GMOCK_ACTION_CLASS_(name, value_params) &&) noexcept \
|
|
|
|
GMOCK_ACTION_CLASS_(name, value_params)(GMOCK_ACTION_CLASS_( \
|
|
|
|
GMOCK_INTERNAL_DEFN_COPY_##value_params template <typename F> \
|
|
|
|
name, value_params) &&) noexcept GMOCK_INTERNAL_DEFN_COPY_ \
|
|
|
|
|
|
|
|
##value_params template <typename F> \ |
|
|
|
operator ::testing::Action<F>() const { \
|
|
|
|
operator ::testing::Action<F>() const { \
|
|
|
|
return GMOCK_PP_IF( \
|
|
|
|
return GMOCK_PP_IF( \
|
|
|
|
GMOCK_PP_IS_EMPTY(GMOCK_INTERNAL_COUNT_##value_params), \
|
|
|
|
GMOCK_PP_IS_EMPTY(GMOCK_INTERNAL_COUNT_##value_params), \
|
|
|
@ -602,13 +603,13 @@ template <std::size_t index, typename... Params> |
|
|
|
struct InvokeArgumentAction { |
|
|
|
struct InvokeArgumentAction { |
|
|
|
template <typename... Args, |
|
|
|
template <typename... Args, |
|
|
|
typename = typename std::enable_if<(index < sizeof...(Args))>::type> |
|
|
|
typename = typename std::enable_if<(index < sizeof...(Args))>::type> |
|
|
|
auto operator()(Args&&... args) const -> decltype(internal::InvokeArgument( |
|
|
|
auto operator()(Args &&...args) const -> decltype(internal::InvokeArgument( |
|
|
|
std::get<index>(std::forward_as_tuple(std::forward<Args>(args)...)), |
|
|
|
std::get<index>(std::forward_as_tuple(std::forward<Args>(args)...)), |
|
|
|
std::declval<const Params&>()...)) { |
|
|
|
std::declval<const Params &>()...)) { |
|
|
|
internal::FlatTuple<Args&&...> args_tuple(FlatTupleConstructTag{}, |
|
|
|
internal::FlatTuple<Args &&...> args_tuple(FlatTupleConstructTag{}, |
|
|
|
std::forward<Args>(args)...); |
|
|
|
std::forward<Args>(args)...); |
|
|
|
return params.Apply([&](const Params&... unpacked_params) { |
|
|
|
return params.Apply([&](const Params &...unpacked_params) { |
|
|
|
auto&& callable = args_tuple.template Get<index>(); |
|
|
|
auto &&callable = args_tuple.template Get<index>(); |
|
|
|
return internal::InvokeArgument( |
|
|
|
return internal::InvokeArgument( |
|
|
|
std::forward<decltype(callable)>(callable), unpacked_params...); |
|
|
|
std::forward<decltype(callable)>(callable), unpacked_params...); |
|
|
|
}); |
|
|
|
}); |
|
|
@ -648,7 +649,7 @@ struct InvokeArgumentAction { |
|
|
|
// later.
|
|
|
|
// later.
|
|
|
|
template <std::size_t index, typename... Params> |
|
|
|
template <std::size_t index, typename... Params> |
|
|
|
internal::InvokeArgumentAction<index, typename std::decay<Params>::type...> |
|
|
|
internal::InvokeArgumentAction<index, typename std::decay<Params>::type...> |
|
|
|
InvokeArgument(Params&&... params) { |
|
|
|
InvokeArgument(Params &&...params) { |
|
|
|
return {internal::FlatTuple<typename std::decay<Params>::type...>( |
|
|
|
return {internal::FlatTuple<typename std::decay<Params>::type...>( |
|
|
|
internal::FlatTupleConstructTag{}, std::forward<Params>(params)...)}; |
|
|
|
internal::FlatTupleConstructTag{}, std::forward<Params>(params)...)}; |
|
|
|
} |
|
|
|
} |
|
|
|