Por ejemplo, ¿qué hay de malo en declarar el duplicador de clase dentro de la función principal, si el predicado solo se usará una vez?¿Por qué es malo tener un functor local?
#include <list>
#include <algorithm>
#define SIZE 10
int main()
{
std::list<int> myList;
for(int i=0; i<SIZE ;++i)
{
myList.push_back(i);
}
class doubler
{
public:
doubler(){}
int operator()(int a)
{
return a + a;
}
} pred;
std::for_each(myList.begin(), myList.end(), pred);
return 0;
}
VS2008 permite esto también – stijn
bien, si usted está usando VS2010 se puede ir a una función lambda directamente. for_each (myList.begin(), myList.end(), [] (int val) {return val + val;}); –
VS2005 permite esto también, y en una nota al margen, GCC da un msg de error bastante críptico, cuando el tipo de funtor es una plantilla:/(me encontré con esto cuando se trata de elaborar un código el cual compila totalmente bien con VS) – smerlin