El uso de la función boost::hana::for_each y el código de muestra
boost::hana es una biblioteca de metaprogramación de C++ que proporciona herramientas como contenedores, algoritmos y operadores comúnmente utilizados en metaprogramación. Entre ellas, la función for_each es una función para atravesar el contenedor y puede realizar la operación especificada en cada elemento del contenedor. Este artículo presentará una de las versiones sobrecargadas de for_each_fn y demostrará su uso mediante código de muestra.
Primero, debe hacer referencia al archivo de encabezado boost/hana/for_each.hpp en el código y luego puede usar la función for_each. El prototipo de función de for_each_fn es el siguiente:
plantilla
constexpr auto for_each_fn(F&& f);
donde F es un tipo de objeto de función que acepta un parámetro que representa cada elemento en el contenedor.
El siguiente es un código de muestra que demuestra cómo usar la función for_each_fn para contar el número de números pares e impares en una matriz de números enteros:
#include <iostream>
#include <boost/hana.hpp>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int even_cnt = 0, odd_cnt = 0;
boost::hana::for_each_fn([&even_cnt, &odd_cnt](auto x) {
if (x % 2 == 0) {
even_cnt++;
} else {
odd_cnt++;
}
})(boost::hana::make_range(arr, arr + sizeof(arr)/sizeof(int)));
std::cout <&l