title: Explicit constructor and static_cast
body: <pre><code>struct Foo
  {
      explicit Foo(int a):m(a){}
      int padd1, m, padd2;
  };
  
  void Bar(Foo){}
  
  int main()
  {
      Bar(11); // OK, gives error
      auto x = static_cast&lt;Foo&gt;(37);
      x.m;
  }
  </code></pre>
  
  <p>Is it ok, that <code>static_cast</code> construct <code>Foo</code> object even though its constructor is marked <code>explicit</code>?</p>
  
  <p>It works in MSVC2013 and GCC <a href="http://ideone.com/dMS5kB" rel="nofollow">http://ideone.com/dMS5kB</a></p>