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 表达式可用的指针。