I was wondering if there is a way to use unique_ptr<T> with Windows HANDLEs?
I was thinking to replace the std::default_delete with specific handle_trats that calls CloseHandle. The problem is that HANDLE is defined as void* unique_ptr<void> won't compile as sizeof(void) is not defined.
So far I see only two possibilities:
- Create a wrapper class for HANDLEs and use it like this:
unique_ptr<new CHandle(h)>. This pretty much makes theunique_ptr<T>itself useless. - Use
HANDLEspecific smart pointer class that resemblesunique_ptr<T>.
What do you think is better choice? What would you suggest?
The question can be extended for COM IUnknown pointers - can CComPtr be replaced by any of the standard smart pointers?