У меня есть такой код, который хорошо работает:
#include <algorithm>
#include <iostream>
char x[11]= "ABCDEFGHIJ";
char y[11];
struct F {
char operator () (char c) const
{ return c+1; }
};
int main()
{
std::transform(x, x+10, y, F());
y[10] = 0; std::cout <<y <<std::endl;
}
Но если я поменяю его на этот стиль:
#include <algorithm>
#include <iostream>
char x[11]= "ABCDEFGHIJ";
char y[11];
int main()
{
struct F {
char operator () (char c) const
{ return c+1; }
};
std::transform(x, x+10, y, F());
y[10] = 0; std::cout <<y <<std::endl;
}
Он не будет компилироваться, говоря:
error: нет соответствующей функции для вызова 'transform (char [11], char *, char [11], main():: F)
Что не так?
Версия gcc - 4.4, которая не распознает лямбда-выражения.