devo tale codice che funziona bene:Perché il codice che utilizza la struct locale come parametro per la funzione STL non viene compilato in 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;
}
Ma se si modifica a questo stile:
#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;
}
non si compila, dicendo:
error: no matching function for call to ‘transform(char [11], char*, char [11], main()::F)’
Cosa c'è di sbagliato?
versione gcc è 4.4, che non riconosce le espressioni lambda.
State compilazione come C++ 03 o C++ 0x? –