Это сбивает с толку, но есть разница между кодом WinRT C ++ и WRL.Вы можете использовать WRL для непосредственного кодирования слоя ABI.WRL не использует исключения, но любит шаблоны.Рекомендуемый стиль кодирования для WinRT отличается от WRL.
Я не уверен, может ли каждый сделать это, но, используя WRL, в общем случае вам нужно реализовать класс, который наследует:
class CreateAysncOp: public RuntimeClass<IAsyncOperation<result_runtime_class*>,AsyncBase<IAsyncCompletedHandler<result_runtime_class*>>
{
...
Тогда вы можете использовать
hr = MakeAndInitialize<CreateAsyncOp, IAsyncOperation<type_foo*>>(...);