Ngay bây giờ, tôi đã phần sau đây để áp dụng hai chức năng đến một giá trị và trả về một tuple 2 giá trị:Áp dụng một tuple chức năng đến một giá trị và trả về một tuple
template<typename F1, typename F2>
class Apply2
{
public:
using return_type = std::tuple<typename F1::return_type, typename F2::return_type>;
Apply2(const F1& f1, const F2& f2) : f1_(f1), f2_(f2) {}
template<typename T> return_type operator()(const T& t) const
{
return std::make_tuple(f1_(t), f2_(t));
}
protected:
const F1& f1_;
const F2& f2_;
};
tôi muốn khái quát này để N chức năng:
template<typename ...F>
class ApplyN
{
public:
using return_type = std::tuple<typename F::return_type...>;
ApplyN(const std::tuple<F...>& fs) : functions_(fs) {}
template<typename T> return_type operator()(const T& t) const
{
return ???;
}
protected:
std::tuple<F...> functions_;
};
Tôi biết tôi có thể cần phải sử dụng đệ quy mẫu bằng cách nào đó, nhưng tôi không thể quấn quanh đầu. Bất kỳ ý tưởng?
Một công việc khác cho Superman! Erm, ý tôi là, đối với [chỉ số] (http://stackoverflow.com/a/10930078/46642). –