std::optional<T>::operator bool, std::optional<T>::has_value 来自cppreference.com < cpp | utility | optional C++ 语言 标准库头文件 自立与有宿主实现 具名要求 语言支持库 概念库 (C++20) 诊断库 工具库 字符串库 容器库 迭代器库 范围库 (C++20) 算法库 数值库 本地化库 输入/输出库 文件系统库 (C++17) 正则表达式库 (C++11) 原子操作库 (C++11) 线程支持库 (C++11) 技术规范 工具库 语言支持 类型支持(基本类型、 RTTI 、类型特征) 库功能特性测试宏 (C++20) 动态内存管理 程序工具 错误处理 协程支持 (C++20) 变参数函数 launder(C++17) initializer_list(C++11) source_location(C++20) 三路比较 (C++20) three_way_comparablethree_way_comparable_with(C++20)(C++20) strong_ordering(C++20) weak_ordering(C++20) partial_ordering(C++20) common_comparison_category(C++20) compare_three_way_result(C++20) compare_three_way(C++20) strong_order(C++20) weak_order(C++20) partial_order(C++20) compare_strong_order_fallback(C++20) compare_weak_order_fallback(C++20) compare_partial_order_fallback(C++20) is_eqis_neqis_ltis_lteqis_gtis_gteq(C++20)(C++20)(C++20)(C++20)(C++20)(C++20) 通用工具 日期和时间 函数对象 格式化库 (C++20) bitset hash(C++11) integer_sequence(C++14) 关系运算符 (C++20 中弃用) rel_ops::operator!=rel_ops::operator>rel_ops::operator<=rel_ops::operator>= 整数比较函数 cmp_equalcmp_not_equalcmp_lesscmp_greatercmp_less_thancmp_greater_than(C++20)(C++20)(C++20)(C++20)(C++20)(C++20) in_range(C++20) swap 与类型运算 swap ranges::swap(C++20) exchange(C++14) declval(C++11) forward(C++11) move(C++11) move_if_noexcept(C++11) as_const(C++17) 常用词汇类型 pair tuple(C++11) apply(C++17) make_from_tuple(C++17) optional(C++17) any(C++17) variant(C++17) 初等字符串转换 to_chars(C++17) from_chars(C++17) chars_format(C++17) std::optional 成员函数 optional::optional optional::~optional optional::operator= 观察器 optional::operator->optional::operator* optional::operator booloptional::has_value optional::value optional::value_or 修改器 optional::emplace optional::swap optional::reset 非成员函数 operator==operator!=operator<operator<=operator>operator>=operator<=>(C++20) make_optional swap 推导指引 辅助类 hash nullopt_t in_place_t bad_optional_access 辅助对象 nullopt in_place constexpr explicit operator bool() const noexcept; (C++17 起) constexpr bool has_value() const noexcept; (C++17 起) 检查 *this 是否含值。 参数 (无) 返回值 若 *this 含值则为 true ,若 *this 不含值则 false 。