跳转至

ev-fmt-source-location-formatter-001

字段 值
项目 fmtlib/fmt
固定 commit 1be298e1bd68
路径 include/fmt/std.h
行段 L480-L494
特性 std::source_location
许可证 MIT
代码来源 项目源码
级别 manual
审核 zyuhao7 @ 2026-10-26
测试代码 否
发现方式 regex

用法

为 std::source_location 提供格式化器

为什么典型

日志与诊断库需要在格式串里直接输出文件名、行号、列号和函数名;特化 formatter 后无需手工拆字段。

摘录

template <> struct formatter<std::source_location> {
  FMT_CONSTEXPR auto parse(parse_context<>& ctx) { return ctx.begin(); }

  template <typename FormatContext>
  auto format(const std::source_location& loc, FormatContext& ctx) const
      -> decltype(ctx.out()) {
    auto out = ctx.out();
    out = detail::write(out, loc.file_name());
    out = detail::write(out, ':');
    out = detail::write<char>(out, loc.line());
    out = detail::write(out, ':');
    out = detail::write<char>(out, loc.column());
    out = detail::write(out, ": ");
    out = detail::write(out, loc.function_name());
    return out;

备注

生产路径;由 __cpp_lib_source_location 特性检测保护。

查看固定 commit 源码 · 返回证据索引