以下のコード スニペットについて質問があります。コードを正しく理解しているかどうかわかりません。
template <typename R, typename... Args>
class RunnableAdapter<R(*)(Args...)> {
public:
typedef R (RunType)(Args...);
explicit RunnableAdapter(R(*function)(Args...))
: function_(function) {
}
R Run(Arg... args) {
return function_(args...);
}
private:
R (*function_)(Args...);
};
<R(*)(Args...)>
は「関数ポインタの型」であり、R と (*) の間の点滅スペースは必ずしも必要ではありませんか?RunnableAdapter のインスタンス化とは何でしょうか? 以下のようなものだと思います。
void myFunction(int i){ // }; RunnableAdfapter<(void)(*)(int)> ra(MyFunction); ra.Run(1); //which calls MyFunction(1)