La biblioteca header-only Boost.HOF [1], acrónimo de Higher Order Functions, constituye una útil herramienta de programación funcional en C++ que, como su nombre indica, opera con funciones de orden superior --es decir, funciones que toman otras funciones como entrada y/o que devuelven otra función como salida. La biblioteca proporciona múltiples utilidades para funciones y objetos función que buscan resolver de forma sencilla problemas que, tradicionalmente, han sido abarcados con técnicas de metaprogramación más complejas (piénsese, por ejemplo, en SFINAE).
En este post analizaremos la funcionalidad del adaptador de funciones proj [2], que aplica proyecciones unarias sobre los argumentos de otra función. Disponemos de dos sobrecargas en el espacio de nombres boost::hof:
donde se asume que el tipo F es ConstInvocable [3].