C++26: Std:Optional
8 months ago
- #C++26
- #Programming
- #C++
- C++26引入std::optional<T&>来表示可选引用,填补了C++17中std::optional<T>留下的空白。
- 与std::optional<T>不同,std::optional<T&>是非占有的,行为类似于可能为nullptr的T指针。
- 对std::optional<T&>的赋值会重新绑定引用而非复制对象,确保行为一致且安全。
- make_optional()不支持可选引用以避免悬垂引用;应直接构造std::optional<T&>。
- const std::optional<T&>提供浅层const性;如需深层const性请使用std::optional<const T&>。
- std::optional<T&>的value_or()通过值返回T,以避免意外的引用语义。
- std::optional<T&>减少了对原始指针和引用包装器的依赖,使代码更安全且更具表达力。