template <class T, typename... Args> void Perestroika(T & obj, Args&&... args) { (&obj)->~T(); new (&obj) T(args...); }