C++ function pointer as Template parameter <p>I have questions with below code snippet, not sure if I correctly understand the codes.</p> <pre><code>template &lt;typename R, typename... Args&gt; class RunnableAdapter&lt;R(*)(Args...)&gt; { public: typedef R (RunType)(Args...); explicit RunnableAdapter(R(*function)(Args...)) : function_(function) { } R Run(Arg... args) { return function_(args...); } private: R (*function_)(Args...); }; </code></pre> <ol> <li><p><code>&lt;R(*)(Args...)&gt;</code> is a "type of function pointer"and blink space between R and (*) is not necessarily required?</p></li> <li><p>and what could instanciation of RunnableAdapter be? I assume it is like below.<br> <code>void myFunction(int i){ // }; RunnableAdfapter&lt;(void)(*)(int)&gt; ra(MyFunction); ra.Run(1); //which calls MyFunction(1)</code></p></li> </ol>