Задачи WinRT C++/CX не компилируются

Я пытаюсь использовать C++/CX для создания компонента WinRT. У меня есть следующий код, и он не компилируется. Что с этим не так? Из того, что я понимаю, задачи PPL должны быть прозрачно преобразованы в IAsyncOperation, если это задача с результатом.

IAsyncOperation<Boolean>^ Class::OpAsync()
{
    return create_task([] () { return true; });
}

Сообщение об ошибке

error C2440: 'return' : cannot convert from 'Concurrency::task<_ReturnType>' to 'Windows::Foundation::IAsyncOperation<TResult> ^'
          with
          [
              _ReturnType=bool
          ]
          and
          [
              TResult=bool
          ]
          No user-defined-conversion operator available, or
          No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

1 ответ

Решение

Функция create_task() предназначена для того, чтобы взять IAsyncOperation и превратить его в задачу (в основном, в противоположность тому, что вы хотите).

Чтобы преобразовать задачу в IAsyncOperation, вам нужно вместо этого вызвать create_async().

Другие вопросы по тегам