Estoy intentando crear una matriz de funtores en tiempo de compilación, así: (archivo completo):error irrecuperable bloque de alcance, variedad de funtores C++
#include <functional>
using namespace std;
function< float(float tElevation, float pAzimuth)> colorFunctions[] = {
[](float tElevation, float pAzimuth) -> float {
return 2.0f ;
},
} ;
int main()
{
}
que funciona bien. Pero tan pronto como se intenta crear un local, dentro del bloque funtor, así:
function< float(float tElevation, float pAzimuth)> colorFunctions[] = {
[](float tElevation, float pAzimuth) -> float {
float v = 2.0f ;
return v ;
},
} ;
obtiene el error 1 error C1506: error de alcance bloque irrecuperable
¿Cómo puedo declarar los locales dentro de estos bloques? No parece funcionar.
que mataron a los parámetros, ya que de ellos siendo utilizados y GCC da ninguna advertencia o nada. Incluso con, el único error es para los parámetros no utilizados. – chris
¿Es válido tener esa coma al final de la expresión lambda? – coelhudo
@coelhudo, es una lista de inicializadores; [es válido] (http://stackoverflow.com/questions/7043372/int-a-1-2-weird-comma-allowed-any-particular-reason). Hace que sea más fácil agregar elementos más adelante. – chris