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 ambigüedades cuando existen otras reglas de especialización que coinciden, como las de rangos. Para resolver esto, propone un enfoque push-based que utiliza la inyección de especializaciones explícitas mediante secuencias de tokens, garantizando que la personalización funcione para todos los tipos sin ambigüedades.
El texto detalla la implementación de un mecanismo de inyección que se activa cuando una clase se completa, permitiendo generar el código necesario para formateadores o atajos estructurados. Se ilustra con ejemplos de cómo inyectar especializaciones para el formateador de depuración y para los atajos estructurados, incluyendo la gestión de tamaños de tuplas y elementos. Sin embargo, el análisis concluye con una crítica técnica: la inyección de atajos estructurados presenta problemas de compatibilidad con las declaraciones estáticas, como static_assert, lo que provoca errores de compilación al intentar verificar el tamaño de la tupla generada dinámicamente. El artículo sirve como referencia para desarrolladores que buscan implementar sistemas de reflexión y personalización robustos en C++26, destacando las complejidades de la gestión de especializaciones y la necesidad de considerar las restricciones de las declaraciones estáticas en el diseño de estos mecanismos.
