#include <stdio.h>
struct Foo
{
Foo() { printf("Foo()\n"); }
Foo(int i) { printf("Foo(int)\n"); }
};
struct Bar
{
Foo foo;
Bar() { foo = Foo(42); printf("Bar()\n"); }
};
struct Baz
{
Foo foo;
Baz() : foo(42) { printf("Baz()\n"); }
};
int main(int,char**)
{
printf("Constructing with initializer list:\n");
Baz baz;
printf("\n");
printf("Constructing with assignment:\n");
Bar bar;
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpzdHJ1Y3QgRm9vCnsKICAgIEZvbygpIHsgcHJpbnRmKCJGb28oKVxuIik7IH0KICAgIEZvbyhpbnQgaSkgeyBwcmludGYoIkZvbyhpbnQpXG4iKTsgfQp9OwoKc3RydWN0IEJhcgp7CiAgICBGb28gZm9vOwogICAgQmFyKCkgeyAgZm9vID0gRm9vKDQyKTsgcHJpbnRmKCJCYXIoKVxuIik7IH0KfTsKCnN0cnVjdCBCYXoKewogICAgRm9vIGZvbzsKICAgIEJheigpIDogZm9vKDQyKSB7IHByaW50ZigiQmF6KClcbiIpOyB9Cn07CgppbnQgbWFpbihpbnQsY2hhcioqKQp7CiAgICBwcmludGYoIkNvbnN0cnVjdGluZyB3aXRoIGluaXRpYWxpemVyIGxpc3Q6XG4iKTsKICAgIEJheiBiYXo7CiAgICBwcmludGYoIlxuIik7CiAgICBwcmludGYoIkNvbnN0cnVjdGluZyB3aXRoIGFzc2lnbm1lbnQ6XG4iKTsKICAgIEJhciBiYXI7CiAgICAKICAgIHJldHVybiAwOwp9