C++中stdexp::optional是什么类型?是否为项目自定义类型?
关于
stdexp::optional的来源说明 stdexp不是C++标准规定的命名空间,你遇到的stdexp::optional大概率是当前项目内部自定义的类型或别名,不属于小众标准类型。
相关背景说明
- C标准库的所有官方类型都归属
std命名空间,std::optional是C17版本正式纳入标准库的类型,作用是封装一个「可能存在、也可能不存在」的值,你搜索结果全部指向它,说明两者的功能和接口设计大概率是一致的。 - 很多需要兼容旧版本C的项目,会在还不支持C17的阶段自行实现和
std::optional功能一致的工具类,通常会放在自定义的命名空间里,stdexp一般是std experiment(标准实验扩展)的缩写,就是项目用来存放对标标准库的自研扩展工具的命名空间。 - 也有部分项目会用别名封装标准库的
std::optional,比如写using stdexp::optional = std::optional;,方便后续如果要替换实现的时候,不用修改所有业务侧的代码。
给初学者的建议
你可以直接在项目全局搜索namespace stdexp或者optional的定义,就能快速确认它的具体来源;日常使用直接参考std::optional的通用用法即可,两者的接口基本没有差异。
内容的提问来源于stack exchange,提问作者DonBaka
相关产品推荐
相关产品推荐

