C ++ y curry

Tengo el codigo

<code>#include <iostream>

using namespace std;

auto fn = ([](int x){
       return [x](int y) {
          return x * y;
       };
});

int main() {

    int i = fn(2)(4); // 8

    cout << i << endl;

    return 0;
}
</code>

Este código funciona bien. Sin embargo, quiero llamar a una segunda función más adelante como:

<code>auto i = fn(2);

i(4); //error: 'i' cannot be used as a function
</code>

¿Hay alguna forma de llamar a la última función más tarde y luego enlazarla con la primera llamada?

Respuestas a la pregunta(3)

Su respuesta a la pregunta