跳转至

ev-abseil-tuple-split-name-value-001

字段 值
项目 abseil/abseil-cpp
固定 commit 2065f4ded055
路径 absl/flags/parse.cc
行段 L284-L296
特性 std::tuple
许可证 Apache-2.0
代码来源 项目源码
级别 manual
审核 zyuhao7 @ 2026-11-03
测试代码 否
发现方式 manual

用法

用 tuple 一次返回名称、值与空值标志三个结果

为什么典型

解析函数需要同时返回多个异构结果;std::tuple 避免为一次性返回值定义具名结构体,并在调用处用 tie 解包。

摘录

// For example:
//      arg           return values
//   "--foo=bar" -> {"foo", "bar", false}.
//   "--foo"     -> {"foo", "", false}.
//   "--foo="    -> {"foo", "", true}.
std::tuple<absl::string_view, absl::string_view, bool> SplitNameAndValue(
    absl::string_view arg) {
  // Allow -foo and --foo
  absl::ConsumePrefix(&arg, "-");

  if (arg.empty()) {
    return std::make_tuple("", "", false);
  }

备注

生产路径;函数签名的 tuple 元素顺序与注释中的返回格式一一对应,调用方用结构化绑定或 tie 解包。

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