#include <memory>
#include <utility>
#include <type_traits>
template <typename T, typename ...Args>
std::unique_ptr<T> make_unique(Args &&... args)
{
return std::unique_ptr<T>(new typename std::conditional<std::is_array<T>::value,
typename std::remove_extent<T>::type[sizeof...(Args)],
T>::type { std::forward<Args>(args)... });
}
int main()
{
auto p = make_unique<int[]>(11, 22, 33);
}
I2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPHV0aWxpdHk+CiNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KCnRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSAuLi5BcmdzPgpzdGQ6OnVuaXF1ZV9wdHI8VD4gbWFrZV91bmlxdWUoQXJncyAmJi4uLiBhcmdzKQp7CiAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFQ+KG5ldyB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfYXJyYXk8VD46OnZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OnJlbW92ZV9leHRlbnQ8VD46OnR5cGVbc2l6ZW9mLi4uKEFyZ3MpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVD46OnR5cGUgeyBzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4gfSk7Cn0KCgppbnQgbWFpbigpCnsKICAgIGF1dG8gcCA9IG1ha2VfdW5pcXVlPGludFtdPigxMSwgMjIsIDMzKTsKfQo=