Can typedef of member function be simplified with helper template classes?
<p>I recently found that function pointer syntax can be simplified when using the following helper class:</p>

<pre><code>template&lt;typename Sig&gt;
struct Fun {
    typedef Sig* Ptr;
};
</code></pre>

<p>It allows me a pointer to <code>void()</code> as follows:</p>

<pre><code>typedef Fun&lt;void()&gt;::Ptr fun_ptr;
fun_ptr f = foo;
</code></pre>

<p>I would like to create a similar utility for to create a typedef to member function pointers. It would allow the following syntax:</p>

<pre><code>struct Foo {
    void bar() {}
};

typedef MemFun&lt;Foo, void()&gt;::Ptr bar_type;
bar_type b = &amp;Foo::bar;
</code></pre>

<p>However, I can't figure out the typedef syntax:</p>

<pre><code>template&lt;class T, typename Sig&gt;
struct MemFun {
    // How to use T and Sig to create member function typedef?
};
</code></pre>

<p>Can anyone help?</p>
