Considérez le code C# suivant :
async Task DoSomethingAsync()
{
if (m_f)
return;
await DoSomethingInternalAsync();
}
Ce que le compilateur transforme cela en est un appel retournant une tâche où si m_f est vrai, la tâche se termine immédiatement et sinon, il "délègue" l'opération asynchrone à DoSomethingInternalAsync().
Maintenant, comment puis-je faire cela en C++ ? Le code devrait ressembler à ceci :
task DoSomethingAsync()
{
if (m_f)
return [[Que dois-je retourner ici pour que la tâche soit complète (.then appelé immédiatement) ?!]];
return DoSomethingInternalAsync();
}
Édition1 : En C#, je peux utiliser une TaskCompletionSource<> pour faire la même chose, mais sans utiliser le mot-clé async - essentiellement créer une Tâche terminée.