Storing boost :: funciones de enlace en un std :: map

Estoy creando un montón de funciones que efectivamente hacen lo mismo:

long Foo::check(long retValue, unsigned toCheck, const std::set<unsigned>& s)
{
    auto it = s.find(toCheck);
    return (it == s.end()) ? -retValue : retValue;
}

where Foo es una clase. Todo bastante simple hasta ahora. Ahora, efectivamente quiero crear muchas variantes sobre esto, pero vinculadas a diferentes conjuntos. Luego quiero almacenarlos en un std :: map. Entonces, usando la función boost :: bind and boost ::, haga algo como:

void Foo::addToMap(unsigned option, const std::set<unsigned>& currentSet)
{
    someMap[option] = boost::bind(&Foo::check, this, _1, _2, currentSet);
}

El problema que estoy teniendo es tratar de definir el tipo de mapa. Pensé que sería:

std::map<unsigned, boost::function<long (long, unsigned)> > someMap;

Pero compilar esto con MSVC 9.0 da:error C2582: 'operator =' function is unavailable in 'boost::function<Signature>'.

¿Cuál debería ser exactamente el segundo argumento de plantilla para mapear?

Respuestas a la pregunta(4)

Su respuesta a la pregunta