#include <memory>
template<typename T, typename... Args>
std::unique_ptr<T> my_unique(Args&&... args)
{
return std::unique_ptr<T>(new T{std::forward<Args>(args)...});
}
struct point { int x, z; };
int main() { my_unique<point>(1, 2); }
I2luY2x1ZGUgPG1lbW9yeT4KCnRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lLi4uIEFyZ3M+CnN0ZDo6dW5pcXVlX3B0cjxUPiBteV91bmlxdWUoQXJncyYmLi4uIGFyZ3MpCnsKICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8VD4obmV3IFR7c3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4ufSk7Cn0KCnN0cnVjdCBwb2ludCB7IGludCB4LCB6OyB9OwppbnQgbWFpbigpIHsgbXlfdW5pcXVlPHBvaW50PigxLCAyKTsgfQ==