Ошибка 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, вам (вероятно) необходимо определить для них форматирование обычного режима.