title: Why doesn't the compiler generate compile errors if an incorrect argument type is passed to a struct initialiser list?
body: <p>I have defined a struct, which has a constructor:</p>
  
  <pre><code>struct MyStruct
  {
      MyStruct(const int value)
          : value(value)
      {
      }
      int value;
  };
  </code></pre>
  
  <p>and the following objects:</p>
  
  <pre><code>int main()
  {
      MyStruct a (true);
      MyStruct b {true};
  }
  </code></pre>
  
  <p>But I haven't received any compile errors, either with MVS2015 or Xcode 7.3.1.</p>
  
  <ol>
  <li>Why am I not getting any compile errors?</li>
  <li>How do I make the compiler help me detect this? (Initially, the struct was written to have <code>bool</code> data, but after some time, code changed and <code>bool</code> became <code>int</code> and several bugs were introduced.)</li>
  </ol>