C++26 define bucles infinitos triviales como comportamiento definido

C++26 corrige una ambigüedad en el estándar que clasificaba como comportamiento indefinido (UB) los bucles infinitos triviales, como `while (true);`. Esta modificación, respaldada por la propuesta P2809R3, establece que estos bucles son ahora bien definidos, lo que impide que los compiladores los op

Análisis de estrategias push y pull para la personalización en C++26

Este artículo técnico examina las limitaciones de las anotaciones basadas en extracción (pull-based) frente a las basadas en inyección (push-based) para la personalización de código en C++26. El autor argumenta que, aunque las especializaciones parciales funcionan en la mayoría de los casos, generan

C++26 introduce std::indirect: semántica de valor para objetos en el heap

C++26 incorpora al encabezado <memory> dos nuevos tipos de vocabulario definidos en la propuesta P3019R14 (Coe, Peacock y Parent): std::indirect<T> y std::polymorphic<T>. Ambos aportan semántica de valor a objetos asignados dinámicamente, algo que std::unique_ptr nunca resolvió del todo. Este artícu

#embed en C++26: cómo incrustar binarios sin herramientas externas

C++26 incorpora #embed, una directiva de preprocesador que permite incrustar el contenido de un archivo binario —imágenes, certificados, configuraciones por defecto— directamente en el código fuente como una secuencia de expresiones constantes enteras, sin recurrir a herramientas externas como xxd,

std::hive de C++26: más rápido que list, pero no reemplaza a vector

std::hive, el nuevo contenedor que incorpora el estándar C++26, ocupa un espacio intermedio entre std::vector y std::list. Como un vector, almacena sus elementos en bloques contiguos de memoria, lo que permite recorrerlos sin saltar entre punteros; como una lista, nunca mueve un elemento tras insert

C++26 reduce el comportamiento indefinido en el núcleo del lenguaje

C++26 marca un avance significativo en seguridad del lenguaje. El comité ha abordado la reducción del comportamiento indefinido (UB) tanto en el núcleo del lenguaje como en la biblioteca estándar. La propuesta P3144R2 convierte en error de compilación la eliminación de un puntero a un tipo incomplet

Interoperabilidad entre std::function y std::copyable_function en C++26

El estándar C++26 introduce std::copyable_function como sucesor de std::function, corrigiendo problemas históricos de diseño: una API sobredimensionada, una operator() const engañosa y excepciones por violaciones de precondición. Sin embargo, copyable_function sigue siendo interconvertible con std::

Borrado de tipos en C++26 con reflexión: la librería duck lo simplifica

La librería rjk::duck, publicada como un único header, aprovecha las anotaciones y la metaprogramación por reflexión introducidas en C++26 para implementar borrado de tipos sin la verbosidad habitual. En lugar de escribir a mano cientos de líneas de código propensas a errores —o recurrir a alternati

C++26 elimina el veto al constexpr en la herencia virtual

C++26 da un paso más en la trayectoria de expansión de constexpr, la palabra clave que permite evaluar expresiones en tiempo de compilación. La propuesta P3533R2, autoría de Hana Dusíková, levanta una de las últimas restricciones sintácticas: la prohibición de declarar constexpr los constructores y

Mejoras de std::format en C++26: formateo de punteros, rutas, constexpr y más

El estándar C++26 incorpora una serie de mejoras a la biblioteca de formateo que simplifican tareas habituales y eliminan hacks heredados. Una de las novedades más simples es la adición de una sobrecarga de std::println sin argumentos, que imprime una línea en blanco en la consola y evita tener que

C++26: Reflexión y Seguridad en la Nueva Versión

El borrador final del estándar C++26 ha sido completado, según anunció Herb Sutter, experto en C++ y ex presidente del comité de estándares ISO C++. Esta nueva versión introduce cambios significativos que buscan modernizar y mejorar el lenguaje. Entre las novedades más destacadas se encuentra la imp

C++ 'freestanding': Lenguaje sin sistema operativo

El término 'freestanding' en C++ se refiere a una implementación del lenguaje que opera sin la dependencia de un sistema operativo (SO) 'hosted'. Esto es crucial en entornos restringidos como sistemas embebidos, kernels de SO o 'bare-metal' donde la asignación dinámica de memoria (heap), llamadas al

C++26 finalizado: la actualización más grande desde C++11

La ISO C++ Committee ha finalizado el trabajo técnico de C++26 tras una reunión celebrada en Londres (Croydon, Reino Unido) el pasado sábado. Este hito marca la culminación de un proceso que involucró a aproximadamente 210 asistentes de 24 países, tanto presenciales (130) como remotos (80). C++26 se

C++26 elimina sintaxis de parámetros elípticos

C++26 introducirá un cambio para eliminar la sintaxis de parámetros elípticos sin una coma precedente, según un anuncio reciente en sandordargo.com. Esta medida, denominada jocosamente la 'coma Oxford variádica', busca mejorar la compatibilidad con el lenguaje C, reducir la confusión entre usuarios

C++26: Reflexión impacta el tiempo de compilación

Un desarrollador ha explorado el impacto en el tiempo de compilación de la nueva característica de reflexión de C++26 (C++26 Reflection). Los resultados iniciales indican que, aunque la propia característica de reflexión tiene un impacto mínimo en el tiempo de compilación, su uso conlleva una signif

C++26 corrige acceso a uniones, elimina riesgo de error

Una reciente aclaración en el estándar C++26, relacionada con el acceso a uniones, evita un posible comportamiento indefinido (UB). El problema surgió en un ejemplo del nuevo `std::is_within_lifetime`, que inicialmente parecía generar UB al acceder a un miembro inactivo de una unión (`c`) cuando el

c++26: verifica la validez de objetos en tiempo de compilación

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 constant