Using std::make_unique with a custom deleter
c++, c++11, c++14
Solution
The whole point of `make_unique` is to encapsulate the notion of "use `new` to create a `T` from given constructor arguments and use `delete` to destroy it".
If you wanted a custom deleter, you would also have to specify how to create the object, and then there would be nothing more gained from having the emplacing maker function.
I wrote some examples of custom maker functions for certain unique resource handles in this post.
Problem
In using `std::unique_ptr` with a custom deleter I desire to use `std::make_unique` rather than a raw new. I am using VC++2013. It appears to me that there is no way to use `std::unique_ptr` if you are using a custom deleter. Did I miss something or is this really the case? Additional Information: I am using a `std::unique_ptr<HANDLE, custom_deleter>` to hold a Windows HANDLE for an opened COM port. I could write a custom RAII class for this, and it wouldn't be terribly difficult, but I was seeing how hard/difficult/bad it would be to use `std::unique_ptr`.