#include <type_traits>
#include <iostream>
struct Foo {
Foo() : x(0), y(0) {}
int x;
int y;
};
struct Bar {
Bar() = default;
int x;
int y;
};
// Apparently the following two lines are not "static initialization" because
// Foo is non-POD yet we can still do this:
Foo f;
Bar b;
int main()
{
if (std::is_pod<Foo>::value) std::cout << "Foo is a POD" << std::endl;
else std::cout << "Foo is *not* a POD" << std::endl;
if (std::is_pod<Bar>::value) std::cout << "Bar is a POD" << std::endl;
else std::cout << "Bar is *not* a POD" << std::endl;
}
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgojaW5jbHVkZSA8aW9zdHJlYW0+CgpzdHJ1Y3QgRm9vIHsKICBGb28oKSA6IHgoMCksIHkoMCkge30KICBpbnQgeDsKICBpbnQgeTsKfTsKCnN0cnVjdCBCYXIgewogIEJhcigpID0gZGVmYXVsdDsKICBpbnQgeDsKICBpbnQgeTsKfTsKCi8vIEFwcGFyZW50bHkgdGhlIGZvbGxvd2luZyB0d28gbGluZXMgYXJlIG5vdCAic3RhdGljIGluaXRpYWxpemF0aW9uIiBiZWNhdXNlCi8vIEZvbyBpcyBub24tUE9EIHlldCB3ZSBjYW4gc3RpbGwgZG8gdGhpczoKRm9vIGY7CkJhciBiOwoKaW50IG1haW4oKQp7CiAgICBpZiAoc3RkOjppc19wb2Q8Rm9vPjo6dmFsdWUpIHN0ZDo6Y291dCA8PCAiRm9vIGlzIGEgUE9EIiA8PCBzdGQ6OmVuZGw7CiAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiRm9vIGlzICpub3QqIGEgUE9EIiA8PCBzdGQ6OmVuZGw7CgogICAgaWYgKHN0ZDo6aXNfcG9kPEJhcj46OnZhbHVlKSBzdGQ6OmNvdXQgPDwgIkJhciBpcyBhIFBPRCIgPDwgc3RkOjplbmRsOwogICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OmNvdXQgPDwgIkJhciBpcyAqbm90KiBhIFBPRCIgPDwgc3RkOjplbmRsOwp9