12
Próbowałem to:czy można zainicjować zmienną statyczną za pomocą lambda?
#include <map>
int main() {
static std::map<int,int> myMap = [](){
std::map<int,int> myMap;
return myMap;
};
}
błąd:
<stdin>: In function 'int main()':
<stdin>:8:3: error: conversion from 'main()::<lambda()>' to non-scalar type 'std::map<int, int>' requested
I tak, wiem, że mogę stworzyć kolejny „normalny” funkcji za to mrówka działa, ale lambda nie może zainicjować obiektów, które droga.
Myślę, że brakowało ci '-> std :: map' w deklaracji lambda. –
theV0ID
@ theV0ID, typ zwracany nie jest konieczny dla lambda, jeśli można go wywnioskować z instrukcji return (tak jak tutaj). (Nota boczna: Jeśli lista parametrów jest pusta, tak jak jest tutaj, jest również opcjonalna, więc można to zapisać za pomocą: 'static auto myMap = [] {return std :: map();}(); ') –