Problema sutil de invocación de C++/WinRT y su solución
2025-03-09

Una solicitud de extracción de C++/WinRT solucionó una ambigüedad en la llamada a `invoke` en `winrt::impl::promise_base::set_completed`, causada por la búsqueda dependiente de argumentos (ADL). La actualización a corrutinas C++20 expandió el espacio de búsqueda ADL, encontrando inesperadamente `std::invoke` en lugar de `winrt::impl::invoke`. El artículo detalla el mecanismo ADL y proporciona un parche para versiones anteriores de C++/WinRT: declarando una función `invoke` más adecuada en el espacio de nombres `winrt::Windows::Foundation` para guiar al compilador. Este parche también incluye una afirmación estática para garantizar que se elimine automáticamente después de actualizar C++/WinRT.
Desarrollo