Хранение функций boost :: bind в std :: map

Я создаю кучу функций, которые все делают одно и то же:

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

где Foo это класс. Пока все довольно просто. Теперь я хочу создать множество вариантов, но привязанных к разным наборам. Затем я хочу сохранить их в std :: map. Итак, используя boost :: bind и boost :: function, сделайте что-то вроде:

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

У меня проблема с попыткой определить тип карты. Я думал, что это будет:

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

Но компиляция этого с MSVC 9.0 дает:error C2582: 'operator =' function is unavailable in 'boost::function<Signature>'.

Каким именно должен быть второй аргумент шаблона для сопоставления?

Ответы на вопрос(2)

Ваш ответ на вопрос