No puede tener un auto
parámetro. Básicamente tienes dos opciones:
Opción # 1: Úselo std::function
como lo ha mostrado.
Opción # 2: Use un parámetro de plantilla:
template<typename F>
void f(F &lambda) { }
La opción n. ° 2 puede, en algunos casos, ser más eficiente, ya que puede evitar una posible asignación de montón para el objeto de función lambda incrustado, pero solo es posible si f
se puede colocar en un encabezado como una función de plantilla. También puede aumentar los tiempos de compilación y la huella de I-cache, al igual que cualquier plantilla. Tenga en cuenta que también puede no tener ningún efecto, ya que si el objeto de la función lambda es lo suficientemente pequeño, puede representarse en línea en el std::function
objeto.
const&
?