#include <iostream>
using namespace std;
struct A
{
A() { cout << "ctor"; }
~A() { cout << "dtor"; }
};
template<class T>
class StaticWrapper
{
public:
StaticWrapper()
{
new (mData) T();
}
private:
alignas(T) int8_t mData[sizeof(T)];
};
int main() {
static StaticWrapper<A> a;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IEEKewoJQSgpIHsgY291dCA8PCAiY3RvciI7IH0KCX5BKCkgeyBjb3V0IDw8ICJkdG9yIjsgfQp9OwoKdGVtcGxhdGU8Y2xhc3MgVD4KY2xhc3MgU3RhdGljV3JhcHBlcgp7CnB1YmxpYzoKCVN0YXRpY1dyYXBwZXIoKQoJewoJCW5ldyAobURhdGEpIFQoKTsKCX0KCQpwcml2YXRlOgoJYWxpZ25hcyhUKSBpbnQ4X3QgbURhdGFbc2l6ZW9mKFQpXTsKfTsKCmludCBtYWluKCkgewoJc3RhdGljIFN0YXRpY1dyYXBwZXI8QT4gYTsKCXJldHVybiAwOwp9