ISP 3A算法实战:从AE/AWB/AF闭环到调参避坑
2026/10/15 8:59:19
<any> 头文件定义
std::any 类以及配套的工具函数与异常类。
编译要求:
- 头文件:<any>
- 命名空间:std
- C++17 标准,MSVC 需要编译选项
/std:c++17及以上。
std::any 核心类
类型擦除容器。any 实例可以保存任意满足构造要求类型的对象,也可以处于无值(空)状态。
主要成员:
- has_value():判断是否保存有效值,noexcept;
- reset():销毁内部保存的值,置为空,noexcept;
- emplace<T>():在 any 内部原位构造 T 类型对象,覆盖原有内容;
- type():返回保存值的 std::type_info;空状态返回 typeid(void);
- 支持拷贝、移动构造与赋值。
| 全局函数 | 功能 |
|---|---|
| any_cast | 读取 any 内部存储的值(返回值版本:类型不匹配 / 对象为空时抛出 bad_any_cast;指针版本:出错返回 nullptr,不抛异常) |
| make_any | 工厂函数,转发参数构造并返回 std::any 对象 |
| swap | 交换两个 any 的内部内容,noexcept |
继承自
std::exception。当 any_cast(值返回版本)转换失败时抛出。成员 what() 返回错误描述字符串。
提示💡:std::any 运行时可以存放任意一种类型;和 std::variant 不同,variant 必须在编译期就列出所有允许的类型集合。