Reutilice bucles anidados sin copiar y pegar

Supongamos que tengo este bucle anidado

for (int a=1; a<MAX_A; ++a)
  for (int b=1; b<MAX_B; ++b)
    for (int c=1; c<MAX_C; ++c)
    {
       do_something(a, b ,c);
    }

y reutilizo este bucle en varias partes de mi código, cambiando la funcióndo_something. Resulta bastante aburrido reescribir cada vez que las tres primeras líneas. En python, por ejemplo, crearía un generador para devolver un iterador(1, 1, 1), (1, 1, 2), ... o algo así comoitertools.product.

En c ++, la única solución que tengo en mente es definir una macro. Algo mejor? E

Respuestas a la pregunta(2)

Su respuesta a la pregunta