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 the unique_ptr<T>
itself useless.
- Use
HANDLE
specific smart pointer class that resembles unique_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?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…