Ошибка spdlog: "не знаю, как форматировать тип, включите fmt/ostream.h, если он предоставляет оператор <<, который следует использовать"

Я только что поднял spdlog, чтобы улучшить нашу регистрацию. Наша регистрация очень проста, поэтому я просто дословно копирую пример с несколькими приемниками для записи в файл и консоль.

Однако даже если точно следовать примеру, я получаю:

Ошибка C2338 не знает, как форматировать тип, включите fmt / ostream.h, если он предоставляет оператор<<, который следует использовать. Logger d: \ tfs \ development \ bladed \ main \ external \ spdlog \ spdlog-1.x \ include \ spdlog \ fmt \ bundled \ core.h 351

Исходя из core.h:

// A formatter for objects of type T.
template <typename T, typename Char = char, typename Enable = void>
struct formatter {
  static_assert(no_formatter_error<T>::value,
    "don't know how to format the type, include fmt/ostream.h if it provides "
    "an operator<< that should be used");

Я предполагаю, что это действительно легко исправить, но я не вижу этого...

[основное использование Win32]

1 ответ

С @PaulMcKenzie, указывающим на меня в правильном направлении, кажется, что я пытался записать тип строки, которую spdlog не может обработать по умолчанию (std::wstrings).

Intellisense в Visual Studio, казалось, был сбит с толку шаблонами, из-за чего он казался довольным моей отправкой spdlog:: warn a std:: wstring.

Решение: либо просто используйте std:: string, либо, если вы хотите использовать wstrings, вам (вероятно) необходимо определить для них форматирование обычного режима.

Другие вопросы по тегам