«Невозможно отформатировать аргумент» при использовании spdlogC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 «Невозможно отформатировать аргумент» при использовании spdlog

Сообщение Anonymous »

Я следил за серией игрового движка The Cherno и столкнулся с проблемой, которую не могу исправить. Пока это единственная часть серии, которую я не понимаю, и ничего из того, что я нашел в Интернете, мне не помогло.
Мы создаем систему событий, где определенные события (ввод, изменение размера окна и т. д.) регистрируются на консоли с помощью системы журналирования, созданной на основе библиотеки spdlog. Диспетчер событий отправляет события соответствующей функции:

Код: Выделить всё

class EventDispatcher {
template
using EventFn = std::function;
public:
EventDispatcher(Event& event)
: m_Event(event) {}

template
bool Dispatch(EventFn func) {
if (m_Event.GetEventType() == T::GetStaticType()) {
m_Event.m_Handled = func(*(T*)&m_Event);
return true;
}
return false;
}
private:
Event& m_Event;
};
При сборке проекта появляется ошибка C2338: невозможно отформатировать аргумент. Чтобы сделать форматируемым тип T, укажите специализацию форматтера. Возможно, я недостаточно хорошо разбираюсь в шаблонах C++ или неправильно использую библиотеку, но я не могу понять, что вызывает эту ошибку. Я убедился, что включил , как предложено здесь, но это не решило проблему.
Если кто-нибудь что-нибудь знает о spdlog code> и мог бы мне помочь, буду признателен. Спасибо!
Изменить:
Полная ошибка вывода:

Код: Выделить всё

1>...\vendor\spdlog\include\spdlog\fmt\bundled\core.h(1568,58): error C2338: Cannot format an argument. To make type T formattable provide a formatter specialization: https://fmt.dev/latest/api.html#udt
который указывает на строку 1568 в spdlog\include\spdlog\fmt\core.h:

Код: Выделить всё

1563    template 
1565    FMT_CONSTEXPR FMT_INLINE auto make_arg(const T& val) -> value {
1566      const auto& arg = arg_mapper().map(val);
1567      static_assert(
1568          std::is_same::value, // 

Подробнее здесь: [url]https://stackoverflow.com/questions/69442851/cannot-format-an-argument-when-using-spdlog[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»