Задачи 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().