¿Cuál es la alternativa a futuros y promesas en C ++ administrado?

Al compilar código C ++ administrado con el indicador / clr, el compilador no permite la inclusión. Estoy tratando de transferir mi código C ++ no administrado a un entorno C ++ administrado. Veo que C # tiene las alternativas Task y TaskCompletionSource para reemplazar futuros y promesas, pero no veo estas opciones disponibles en C ++ administrado. Necesito realizar interoperabilidad con algunas bibliotecas no administradas de C ++, por lo que no puedo cambiar a C # por completo. Todavía necesito una capa de C ++ en el medio. ¿Cómo puedo lograr la funcionalidad futura / prometedora en C ++ administrado?

Aquí hay un ejemplo de código no administrado en C ++ que se compila sin el indicador / clr:

int Foo(std::future<int> &fur) {
    int result = 1;
    int value = fut.get();
    // Do something with value

    return result;
}   

int main() {
    int x;
    std::promise<int> p;
    std::future<int> f = p.get_future();
    std::future<int> fut = std::async(Foo, std::ref(f));
    int val = 1;
    p.set_value(val);
    x = fut.get();
}    

Quiero poder hacer esto en C ++ / CLI

Respuestas a la pregunta(2)

Su respuesta a la pregunta