次の形式の可変個引数マクロを指定します。
#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は「プレーンな」関数ポインターであると想定されていることに注意してください。