How can I write a C++/WinRT IAsyncOperation where T is not a Windows Runtime type?, part 1

I often get asked about how one could use C++/WinRT’s IAsyncOperation<T> where T is not a Windows Runtime type. The T in IAsyncOperation<T> must be a Windows Runtime type because the algorithm for generating an interface ID for IAsyncOperation<T> work

Click here to read the article