как напечатать std :: map с помощью spdlog - PullRequest
0 голосов
/ 26 апреля 2020
int main()
{
    std::map<std::string, std::string> o;
    o["foo"] = "foo value";
    spdlog::info(o);
    return 0;
}

Ошибка: static_assert не выполнен из-за требования 'formattable' "Невозможно отформатировать аргумент. Чтобы сделать форматируемым тип T, укажите специализацию форматера: https://fmt.dev/latest/api.html#formatting -user-определяемые типы "

1 Ответ

0 голосов
/ 07 мая 2020

spdlog поддерживает только те типы, которые имеют operator <<#include <fmt/ostream.h>)

У вас есть 2 варианта:

  • Реализация функции: std::ostream& operator <<(std::ostream&, const std::map<std::string, std::string>&)
  • Лог ключ и значение в л oop:
for (const auto&[k, v] : o)
{
    spdlog::info("key is {}, value is {}", k, v);
}
...