Range-v3: Una introducción a la biblioteca (Parte VII)

Este nuevo post de la serie dedicada a la biblioteca Range-v3 centra su atención en la vista cartesian_product, destinada a iterar productos cartesianos de rangos. Analizaremos el modo de lograr un grado de expresividad en código similar al facilitado por Python, comparando las diferencias de rendimiento con dicho lenguaje.

Programando con C++20 (Parte V): CPOs (customization point objects)

 Artículos de la serie:


Entendemos como punto de personalización (customization point) toda aquella operación dentro de una biblioteca que, de forma opcional u obligatoria, delegue su comportamiento en código proporcionado por el programador-usuario [1].

Así, consideremos la plantilla de función estándar std::swap, que proporciona la posibilidad de sobrescribir su comportamiento. En estándares de C++ previos a 2020, el modo de empleo tradicional de este punto de personalización en un contexto genérico consistiría en:

  1. Introducir una declaración using std::swap.
  2. Realizar una o varias llamadas sin calificar (unqualified calls) a la función swap.