Próbuję utworzyć tablicę funktorów w czasie kompilacji, w taki sposób: (kompletnej dokumentacji):Nieodwracalne błąd blok określania zakresu, tablica funktorów C++
#include <functional>
using namespace std;
function< float(float tElevation, float pAzimuth)> colorFunctions[] = {
[](float tElevation, float pAzimuth) -> float {
return 2.0f ;
},
} ;
int main()
{
}
To działa dobrze. Ale jak tylko próby utworzenia lokalnego wewnątrz bloku funktora, jak to:
function< float(float tElevation, float pAzimuth)> colorFunctions[] = {
[](float tElevation, float pAzimuth) -> float {
float v = 2.0f ;
return v ;
},
} ;
Otrzymasz Error 1 error C1506: błąd określania zakresu nieodwracalny blok
Jak mogę zadeklarować mieszkańców wewnątrz tych bloków? To nie działa.
Zabiłem parametry, ponieważ z nich jest nieużywany i GCC daje żadnych ostrzeżeń ani nic. Nawet z, jedynym błędem jest dla nieużywanych parametrów. – chris
Czy na końcu wyrażenia lambda można umieścić ten przecinek? – coelhudo
@coelhudo, To lista inicjalizatorów; [jest ważne] (http://stackoverflow.com/questions/7043372/int-a-1-2-weird-comma-allowed-any-particular-reason). Ułatwia dodawanie elementów później. – chris