title: The unmatched function signature between function objects in c++
body: <p>I got this code piece as below, and it builds:</p>
  
  <pre><code>#include &lt;functional&gt;
  
  typedef std::function&lt;void(int)&gt; ReadCallback;
  
  void falseRead() {}
  
  int main()
  {
      ReadCallback callback = std::bind(falseRead);
  }
  </code></pre>
  
  <p>The signature of ReadCallback is <code>void(int)</code>, whereas the signature of falseRead is <code>void()</code>. How can the assignment happen?</p>
  
  <p>And if I use the <code>callback</code> object to call the function, which statement should I use, <code>callback()</code> or <code>callback(0)</code>?</p>