Мне было интересно, есть ли способ использовать unique_ptr<T>
с Windows HANDLEs?
Я думал заменить std::default_delete
на конкретный handle_trats
, который вызывает CloseHandle
. Проблема в том, что HANDLE
определено как void*
unique_ptr<void>
не будет компилироваться, поскольку sizeof(void)
не определено.
Пока я вижу только две возможности:
- Создайте класс-оболочку для HANDLE и используйте его следующим образом:
unique_ptr<new CHandle(h)>
. Это в значительной степени делает бесполезным unique_ptr<T>
.
- Используйте
HANDLE
определенный класс интеллектуальных указателей, который напоминает unique_ptr<T>
.
Как вы думаете, какой выбор лучше? Что ты предлагаешь?
Вопрос может быть расширен для COM IUnknown
указателей - можно ли CComPtr
заменить любым из стандартных интеллектуальных указателей?