Я пишу программу в Windows COM на C++ и использую CComPtr
для интеллектуальных указателей.
Вопрос, на который я не могу найти ответ: могу ли я использовать CComPtr
внутри std::map
.
У меня есть следующий фрагмент кода (упрощенный):
std::map<int, CComPtr<IErrorInfo> > ErrorMap;
Я хочу сохранить это сопоставление между int
s и IErrorInfo
информацией об ошибках.
Однако я не уверен, смогу ли я сделать следующее:
CComPtr<IErrorInfo> result;
GetErrorInfo(0, &pErrInfo);
ErrorMap.insert(std::make_pair(0, result));
Меня беспокоит право собственности на интеллектуальный указатель result
и правильно ли он будет освобожден, когда ErrorMap
будет уничтожен?