Область применения C++ ComPtr Callback
Я читал о WRL, в частности, используя Callback и ComPtr для выполнения асинхронной операции. Однако я не могу получить четкий ответ о времени жизни ComPtr при использовании таким образом. Обратный вызов использует информацию, которую возвращает асинхронная функция, но не полагается на какую-либо другую информацию из приложения, поэтому я не хотел бы ждать ее завершения. Например:
void SomeFunction()
{
ComPtr<IAsyncOperation<...*>> pOperation;
//Activate instance and call async function
pOperation->put_Completed(Callback<IAsyncOperationCompletedHander<...*>[...](...)
{
//Logic to be completed when Async call finishes
}).Get());
//Function exits here, process keeps running. Is pOperation going to get cleaned up?
}
У меня сложилось впечатление, что, поскольку ComPtr - это умный указатель, он не будет собирать мусор, пока не завершится обратный вызов и refcount == 0, это правильно?