Хочу иметь map, задающий связь между std::type_info и функцией. Выглядит так:
std::map<std::type_info, std::function<std::string(const std::any&)>> serializers;
Я могу добавлять в него элементы так:
serializers.emplace(typeid(void), [] (const std::any&) -> std::string {
return "null";
});
А я хочу сразу задать содержимое при объявлении:
std::map<std::type_info, std::function<std::string(const std::any&)>> serializers = {
{ typeid(void), [] (const std::any&) -> std::string {
return "null";
} }
};
В итоге получаю ошибку, что не наден подходящий конструктор.
Разумеется, стандарт C++17 включен. Пробовал GCC и Clang актуальных версий.
Что я делаю не так?