Hasty Briefsbeta

双语

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&>减少了对原始指针和引用包装器的依赖,使代码更安全且更具表达力。