Я хочу вставить std::function как ключ std::map, но код не компилируется, есть мысли?
int sum(int a, float b){
return a+b;
}
int main()
{
std::function<int(int, float)>f = sum;
std::map <std::function<int(int, float)>, std::string> mapa;
mapa.insert(std::make_pair(f, "sum"));
}
может быть, вы хотите, чтобы строка была ключом, а функция - значением?
Это очень необычно. Можете ли вы описать, что вы хотите, чтобы программа делала? Возможно, мы сможем предложить альтернативы.
std::map<std::string, std::function<int(int,float)> ? Чтобы можно было искать функцию по имени?





std::map требуются заказанные ключи.
std::function не поддерживает заказ.
Они не могут работать вместе.
Добавление требований к заказу в std::function не тривиально. Я бы посоветовал не пытаться.
Обратите внимание, что у перевернутой карты нет проблем.
std::function даже не поддерживает ==, не говоря уже о < или (для неупорядоченной карты) std::hash.
Пересмотрите свой дизайн.
но код не компилируется - что он делает, если не компилируется? Любая ошибка?