跳转至

ev-abseil-constexpr-lambda-copy-003

字段 值
项目 abseil/abseil-cpp
固定 commit 2065f4ded055
路径 absl/algorithm/container_test.cc
行段 L1923-L1930
特性 constexpr lambda
许可证 Apache-2.0
代码来源 项目源码
级别 manual
审核 zyuhao7 @ 2026-10-26
测试代码 是
发现方式 manual

用法

用 constexpr lambda 捕获静态常量数组并在编译期复制

为什么典型

lambda 可以按值捕获 constexpr 变量,在常量求值中调用算法生成另一份数据,并用 static_assert 校验。

摘录

TEST(ConstexprTest, Copy) {
  static constexpr std::array kArray = {1, 2, 3};
  static constexpr auto kArrayCopy = [] {
    std::array<int, 3> array;
    absl::c_copy(kArray, array.begin());
    return array;
  }();
  static_assert(kArrayCopy == kArray);

备注

测试路径;无捕获 lambda 仍可读取静态存储期的 constexpr 数组。

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