C++26: Std:Is_within_lifetime
8 days ago
- #C++26
- #CompileTimeProgramming
- #Unions
- std::is_within_lifetime 是 C++26 <type_traits> 中的新函数,用于在常量求值期间检查指针是否指向生命周期内的对象。
- 主要用例是检查联合体的活跃成员,例如验证当前有效的联合体变体。
- 该函数仅限 consteval 使用(仅编译期可用),因为编译器在常量求值期间能更好地追踪对象生命周期。
- 采用指针而非引用作为参数,以更明确地表达内存位置而非值的语义。
- 通用命名(非联合体专用)为未来扩展提供了可能,不局限于检查联合体成员。
- 其设计动机源于实现最小存储的 Optional<bool>,解决了编译期活跃成员检查的问题。
- 截至 2026 年 2 月尚无编译器支持,但为 constexpr 联合体处理提供了优雅的解决方案。