我有一个用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包装某些类型?
答案 0 :(得分:2)
您可以使用alias template。
template<class... Types>
using GenericAction = GenericFunc<void, Types...>;