fmtlib:没有解析选项的用户定义类型的快捷方式?

fmtlib: shortcut for user-defined types with no parsing options?

我正在使用 {fmt} C++ 库。我为我自己的类型写了很多 fmt::formatter 专业化。其中大部分都没有格式化选项,因此每个 class 都有一个样板实现 parse(format_parse_context):

constexpr auto parse(format_parse_context& ctx)
{
    auto it = ctx.begin(), end = ctx.end();
    if (it != end && *it != '}')
        throw format_error("invalid format");
    return it;
}

我希望 fmt::formatter 有一个 parse 的默认实现,它没有任何选项,但它没有。这有什么捷径吗?像 fmt::optionless_formatter class?

parse的实现可以简单得多:

constexpr auto parse(format_parse_context& ctx) { return ctx.begin(); }

您还可以通过继承或组合重用现有的 formatter 特化。