title: Binding functions with different signatures
body: <p>If this question has been asked, I apologize. </p>
  
  <p>I thought you couldn't bind functions with a different signature, but look at this:</p>
  
  <pre><code>void TakesChar(char parameter)
  {
      std::cout &lt;&lt; parameter &lt;&lt; std::endl;
  }
  
  using CallSig = void(float);
  using CallBack = std::function&lt;CallSig&gt;;
  
  int main()
  {
      CallBack callback = std::bind(&amp;TakesChar, std::placeholders::_1);
      callback(1.1f);
      callback(2.2f);
  
      return 0;
  }
  </code></pre>
  
  <p>That compiles and runs. You can try different parameter types and numbers. You can, for instance, modify <code>TakesChar</code> so that it takes no parameters, and it will still compile.</p>
  
  <p>Why is this? Is there a rationale behind it? And can I enforce signatures to match exactly?</p>
  
  <p>Thanks.</p>