如何使用typedef和variadic模板包装除一个模板参数之外的所有参数?

时间:2015-05-28 04:14:08

标签: c++ c++11 typedef variadic-templates

我有一个用SWIG包装的类,它是std :: function proxy:

template <class TR = void, class ... Types>
struct GenericFunc : std::function<TR (Types...)> {
    GenericFunc() {}

    GenericFunc(const std::function<TR (Types... t)> & Action) : std::function<TR (Types... t)>(Action) {}

    virtual TR OnAction(Types ... result) {
        if(*this) {
            return (*this)(result...);
        }
        return TR();
    }
    virtual ~GenericFunc(){}
};

在C#或Java中可以重载OnAction并得到他想要的东西,而在C ++方面我们只有一个额外的检查。

拥有Func之后,我希望拥有一个Action - 一个可以返回无效的函数。

typedef GenericFunc<void,  Types...> GenericAction<class ... Types>;

所以我想知道如何使用typedef(而不是继承)创建一个动作..而且I get many errors

如何通过C ++ 11和typedef包装某些类型?

1 个答案:

答案 0 :(得分:2)

您可以使用alias template

template<class... Types>
using GenericAction = GenericFunc<void, Types...>;