Na przykład, co jest złego w zadeklarowaniu podwajacza klas w funkcji głównej, jeśli predykat zostanie użyty tylko raz?Dlaczego korzystanie z lokalnego funktora jest złe?
#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 umożliwia to również – stijn
dobrze, jeśli korzystasz z VS2010, możesz przejść bezpośrednio do funkcji lambda. for_each (myList.begin(), myList.end(), [] (int val) {return val + val;}); –
vs2005 również to umożliwia, i na stronie internetowej, GCC daje dość tajemniczy komunikat o błędzie, gdy typem funktora jest szablon:/(wpadłem na to, próbując skompilować kod, który kompilował się zupełnie dobrze z VS) – smerlin