me tienen dicho código que funciona bien:¿Por qué el código que usa la estructura local como parámetro para la función STL no se compila en g ++?
#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;
}
Pero si lo cambio a este estilo:
#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;
}
No compilará, diciendo:
error: no matching function for call to ‘transform(char [11], char*, char [11], main()::F)’
¿Qué pasa?
La versión de gcc es 4.4, que no reconoce expresiones lambda.
¿Está recopilando como C++ 03 o C++ 0x? –