¿Cómo puedo escribir una macro 'clamp' / 'clip' / 'bound' para devolver un valor en un rango dado?
A menudo me encuentro escribiendo algo como
int computedValue = ...;
return MAX(0, MIN(5, computedValue));
Me gustaría poder escribir esto como una sola macro de una línea. Debe estar libre de efectos secundarios, de la misma manera que las macros existentes del sistema MIN y MAX, y debería funcionar para los mismos tipos de datos que MIN y MAX.
¿Alguien me puede mostrar cómo convertir esto en una sola macro?