tipos stephen receta que prepara planta origen mexico condimento como c++ stl functional-programming c++11 lambda

c++ - stephen - ¿Se puede utilizar el curry con funciones lambda?



que es el curry en mexico (2)

Utilizar:

auto sumFive = std::bind(lambda, 5, std::placeholders::_1);

Por favor, olvídese por completo acerca de bind1st y binary_function , etc. Esas eran muletas en el antiguo C ++ debido a la falta de lambdas y plantillas variadas. En C ++ 11, use std::function y std::bind .

Este fragmento de código no se compila y no sé si se debe a que no se puede hacer, los lambdas no heredan de binary_function o es solo que estoy obteniendo una sintaxis incorrecta

#include <functional> int main(int argc, const char *argv[]) { auto lambda = [](int x, int y) -> int { return x + y; }; auto sumFive = std::bind1st(lambda, 5); return 0; }


std::bind1st y std::bind son redundantes en C ++ 11. Solo usa otro lambda:

auto lambda = [](int x, int y) { return x + y; }; auto sumFive = [&](int y) { return lambda(5, y); };

Esto es más claro y simple (no es necesario saber qué hace std::bind o para qué son los std::placeholders ), más flexible (puede admitir cualquier expresión, no solo el enlace de parámetros), no requiere encabezados, y probablemente compilar un poco más rápido también.