C++26 introduce std::is_within_lifetime, una nueva función para realizar comprobaciones de validez de objetos en tiempo de compilación. Esta función, incluida en el encabezado <type_traits>, determina si un puntero apunta a un objeto que está dentro de su vida útil durante la evaluación constante. Su uso más común es verificar qué miembro de una unión está activo, evitando comportamientos indefinidos al acceder a miembros incorrectos. La función es consteval, lo que significa que solo puede utilizarse en tiempo de compilación, ya que el compilador mantiene información de vida útil más detallada en ese contexto. Se utiliza un puntero en lugar de una referencia para evitar complicaciones con objetos temporales y reglas de extensión de vida útil. Aunque la motivación inicial surgió de la necesidad de implementar un Optional<bool> con bajo consumo de memoria, el comité optó por una solución más general que podría ser útil en otros escenarios de evaluación constante. Actualmente, ninguna de las principales compiladoras soporta esta característica, que se espera que se implemente en futuras versiones. En resumen, std::is_within_lifetime es una adición valiosa a C++26 que mejora la seguridad y la expresividad de la evaluación constexpr.
