#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); }