【发布时间】:2011-08-23 13:18:37
【问题描述】:
给定一个可变参数宏的形式:
#define MY_CALL_RETURN_F(FType, FId, ...) \
if(/*prelude omitted*/) { \
FType f = (FType)GetFuncFomId(FId); \
if(f) { \
return f(__VA_ARGS__); \
} else { \
throw invalid_function_id(FId); \
} \
} \
/**/
-- 如何将其重写为可变参数函数模板?
template<typename FType, typename ...Args>
/*return type?*/ tmpl_call_return_f(MyFunId const& FId, /*what goes here?*/)
{
...
FType f = (FType)GetFuncFomId(FId);
return f(/*what goes here?*/);
...
}
更新:我对如何声明 Args 的引用类型特别感兴趣:&& 或 const& 还是什么?
更新:请注意,FType 应该是“普通”函数指针。
【问题讨论】:
标签: variadic-functions variadic-templates c++11 perfect-forwarding variadic-macros