Sto cercando di creare un array di funtori al momento della compilazione, in questo modo: (file completo):errore irreversibile blocco scoping, serie di C++ funtori
#include <functional>
using namespace std;
function< float(float tElevation, float pAzimuth)> colorFunctions[] = {
[](float tElevation, float pAzimuth) -> float {
return 2.0f ;
},
} ;
int main()
{
}
che funziona bene. Ma non appena si tenta di creare un locale all'interno del blocco funtore, in questo modo:
function< float(float tElevation, float pAzimuth)> colorFunctions[] = {
[](float tElevation, float pAzimuth) -> float {
float v = 2.0f ;
return v ;
},
} ;
Si ottiene di errore 1 errore C1506: errore di scoping blocco irrecuperabile
Come posso dichiarare i locali dentro questi blocchi? Non sembra funzionare.
ho ucciso i parametri a causa del loro essere inutilizzato e GCC dà nessun avviso o altro. Anche con, l'unico errore è per i parametri non utilizzati. – chris
È valido avere quella virgola alla fine dell'espressione lambda? – coelhudo
@coelhudo, È un elenco di inizializzazione; [è valido] (http://stackoverflow.com/questions/7043372/int-a-1-2-weird-comma-allowed-any-particular-reason). Rende più facile aggiungere elementi in seguito. – chris