Storing boost :: bind funciona em um std :: map

Estou criando várias funções que efetivamente fazem a mesma coisa:

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 é uma classe. Tudo bastante simples até agora. Agora, eu quero efetivamente criar muitas variantes, mas vinculado a conjuntos diferentes. Quero então armazená-los em um std :: map. Portanto, usando a função boost :: bind e boost ::, faça algo como:

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

O problema que estou tendo é tentar definir o tipo do mapa. Eu pensei que seria:

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

Mas compilar isso com o MSVC 9.0 fornece:error C2582: 'operator =' function is unavailable in 'boost::function<Signature>'.

Qual deve ser exatamente o segundo argumento do modelo a ser mapeado?

questionAnswers(4)

yourAnswerToTheQuestion