title: std::bind not working
body: <p>I can't get <code>std::bind</code> to work the same way <code>boost::bind</code> works.  Either I'm not using it correctly, or my compiler (GCC 4.4.5) doesn't implement it correctly yet.  </p>
  
  <p>I have two functions:</p>
  
  <pre><code>void f(int x, int y)
  {
      cout &lt;&lt; x &lt;&lt; " | " &lt;&lt; y &lt;&lt; endl;
  }
  
  template &lt;class UnaryFunction&gt;
  void g(UnaryFunction func)
  {
      func(100);
  }
  </code></pre>
  
  <p>I use bind to call <code>f</code> as a unary function in g:</p>
  
  <pre><code>g(std::bind(f, 10, std::placeholders::_1));
  </code></pre>
  
  <p>This results in a compiler error:</p>
  
  <pre><code>error: no match for call to ‘(std::_Bind&lt;void (*(int, std::_Placeholder&lt;1&gt;))(int, int)&gt;) (int)’
  </code></pre>
  
  <p>... followed by a page or so of template compiler vomit.</p>
  
  <p>If I use <code>boost::bind</code>, like:</p>
  
  <pre><code>g(boost::bind(f, 10, _1));
  </code></pre>
  
  <p>...it works fine.  Are the semantics of <code>std::bind</code> somehow different, or is this a compiler issue?</p>