spdlog错误:“不知道如何格式化类型,如果提供了应该使用的运算符<<,则包括fmt / ostream.h”

时间:2018-11-22 14:15:17

标签: c++ spdlog fmt

我刚刚选择了spdlog来改善我们的日志记录。我们的日志记录是非常基础的,因此我只是几乎逐字复制“多接收器”示例以记录到文件和控制台。

但是,即使完全按照示例进行操作,我也会得到:

错误C2338不知道如何格式化类型,如果提供了运算符,请包含fmt / ostream.h <<应该使用的记录程序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 个答案:

答案 0 :(得分:2)

@PaulMcKenzie指向正确的方向时,似乎我正在尝试记录spdlog默认无法处理的字符串类型(std :: wstrings)。

Visual Studio的Intellisense似乎对模板感到困惑,这使其对我发送的spdlog :: warn std :: wstring感到满意。

解决方案:要么仅使用std :: string,要么如果您想使用wstrings,则(可能)需要为其定义自定义格式化程序。