C ++ std :: la función no puede encontrar la sobrecarga correcta

Considere el siguiente caso:

void Set(const std::function<void(int)> &fn);
void Set(const std::function<void(int, int)> &fn);

Ahora llamando a la función con

Set([](int a) {
    //...
});

Da el error "llamada ambigua a función sobrecargada". Estoy usando Visual Studio 2010. ¿Existe alguna solución u otro método para lograr algo similar? No puedo usar plantillas,porque estas funciones se almacenan para su uso posterior porque no puedo determinar la cantidad de parámetros en ese caso. Si me preguntas, puedo enviar más detalles.

Respuestas a la pregunta(3)

Su respuesta a la pregunta