Есть ли способ использовать make_unique и передать выходные данные функции в качестве параметра?
auto loadedSurface1 = std::unique_ptr<SDL_Surface,SurfaceDeleter>(IMG_Load(path.c_str()));
auto loadedSurface2 = std::make_unique<SDL_Surface, SurfaceDeleter>();
loadedSurface2.reset(IMG_Load(path.c_str()));
auto loadedSurface3 = std::make_unique<SDL_Surface, SurfaceDeleter>(IMG_Load(path.c_str())));
SurfaceDeleter является функтором.
ЗагруженныйSurface1 и ЗагруженныйSurface2 оба работают отлично. ЗагруженныйSurface3 не выполняется (ни один экземпляр перегруженной функции не соответствует списку аргументов)
Если нет никакого способа заставить загруженныйSurface3 работать, рекомендуется загруженныйSurface2 вместо загруженногоSurface1, потому что он использует make_unique?