Avances en C++29: zap de punteros al final de vida útil y accesos OOTA

Fuentes: C++ Lifetime-End Pointer-Zap and OOTA Progress

El comité de estándares de C++ celebró en junio de 2026 su reunión en Brno, donde aprobó tres propuestas que permiten implementar de forma directa en C++29 el algoritmo LIFO Push, un problema pendiente desde el estándar original de 1998. Las tres papers —P2434R4 sobre procedencia no determinista de punteros, P2414R12 sobre operaciones atómicas y volátiles con punteros inválidos, y P3347R6 sobre cargas y almacenes en punteros inválidos— sientan las bases del mecanismo de zap de punteros al final de su vida útil. La paper P3790R1, que define una clase de puntero tipo bag-of-bits, no fue votada por requerir revisiones de redacción y se discutirá en noviembre de 2026.

En paralelo, el comité también votó a favor de P3692R4, que aborda los accesos out-of-thin-air (OOTA), un problema abierto desde hace un cuarto de siglo. La propuesta aporta definiciones y pruebas informales de Alan Stern que garantizan que un programa sin comportamiento indefinido y con atómicos volátiles no generará valores OOTA, incluso con compiladores convencionales que usen atómicos no volátiles bajo restricciones razonables. El borrador N5046 de mayo de 2026 ya recoge ejemplos de ciclos prohibidos.

P3692R4 no resuelve el problema para herramientas de verificación formal atemporal como herd7 y CPPMEM, ni aporta una solución matemática completa, trabajo en el que siguen Mark Batty y colaboradores. Los implementadores de C y Rust también podrían beneficiarse de garantías similares.