title: boost bind to a data member callback behavior
body: <p>Can someone please explain this piece of code?</p>
  
  <pre><code>struct Class {
      boost::function&lt;void()&gt; member;
  };
  Class c;
  
  boost::function&lt;boost::function&lt;void()&gt;()&gt; foo = boost::bind(&amp;Class::member, &amp;c);
  boost::function&lt;void()&gt; bar = boost::bind(&amp;Class::member, &amp;c);
  </code></pre>
  
  <p>Why does the definition of <code>bar</code> compile and what is the result of it?</p>
  
  <p>Edit: <code>foo()</code> works as expected, calling <code>c.member()</code>, but <code>bar()</code> doesn't.</p>