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<Foo>(37);
x.m;
}
Это нормально, что static_cast
создает объект Foo
, хотя его конструктор помечен explicit
?
Он работает в MSVC2013 и GCC http://ideone.com/dMS5kB.