跳转至

ev-abseil-static-assert-wrapunique-array-001

字段 值
项目 abseil/abseil-cpp
固定 commit 2065f4ded055
路径 absl/memory/memory.h
行段 L71-L76
特性 static_assert
许可证 Apache-2.0
代码来源 项目源码
级别 manual
审核 zyuhao7 @ 2026-10-27
测试代码 否
发现方式 manual

用法

在模板函数内用带消息的 static_assert 拒绝数组与非对象类型

为什么典型

WrapUnique 不能包装数组或 void 指针,静态断言把非法类型挡在实例化阶段并说明原因。

摘录

template <typename T>
std::unique_ptr<T> WrapUnique(T* ptr) {
  static_assert(!std::is_array_v<T>, "array types are unsupported");
  static_assert(std::is_object_v<T>, "non-object types are unsupported");
  return std::unique_ptr<T>(ptr);
}

备注

生产路径;absl::WrapUnique 的唯一合法输入是 delete 表达式可用的指针。

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