Я только что поднял 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]С @PaulMcKenzie, указывающим на меня в правильном направлении, кажется, что я пытался записать тип строки, которую spdlog не может обработать по умолчанию (std :: wstrings).
Intellisense в Visual Studio, казалось, был сбит с толку шаблонами, из-за чего он казался довольным моей отправкой spdlog :: warn a std :: wstring.
Решение: либо просто используйте std :: string, либо, если вы хотите использовать wstrings, вам (вероятно) необходимо определить для них форматирование обычного режима.
Других решений пока нет …