12
Ho provato questo:è possibile inizializzare la variabile statica con lambda?
#include <map>
int main() {
static std::map<int,int> myMap = [](){
std::map<int,int> myMap;
return myMap;
};
}
errore:
<stdin>: In function 'int main()':
<stdin>:8:3: error: conversion from 'main()::<lambda()>' to non-scalar type 'std::map<int, int>' requested
E sì, so che posso creare un'altra funzione 'normale' per questo formica funziona, ma lambda non è possibile inizializzare oggetti di tale modo.
Penso che ci sia mancato '-> std :: map' all'interno della dichiarazione lambda. –
theV0ID
@ theV0ID, il tipo restituito non è necessario su un lambda se può essere dedotto dall'istruzione return (come può qui). (Nota a margine: se l'elenco dei parametri è vuoto, come è qui, è anche opzionale, quindi può essere scritto usando: 'static auto myMap = [] {return std :: map();}(); ') –