typename THead, typename... TTail>
void collectVariadicHelper(const std::shared_ptr<T<Ts...>>& ctx,
THead&& head, TTail&&... tail) {
- head.setCallback_([ctx](Try<typename THead::value_type>&& t) {
- ctx->template setPartialResult<typename THead::value_type,
- sizeof...(Ts) - sizeof...(TTail) - 1>(t);
+ using ValueType = typename std::decay<THead>::type::value_type;
+ std::forward<THead>(head).setCallback_([ctx](Try<ValueType>&& t) {
+ ctx->template setPartialResult<
+ ValueType,
+ sizeof...(Ts) - sizeof...(TTail)-1>(t);
});
// template tail-recursion
collectVariadicHelper(ctx, std::forward<TTail>(tail)...);