12
Я попытался это:Можно ли инициализировать статическую переменную с помощью лямбда?
#include <map>
int main() {
static std::map<int,int> myMap = [](){
std::map<int,int> myMap;
return myMap;
};
}
ошибка:
<stdin>: In function 'int main()':
<stdin>:8:3: error: conversion from 'main()::<lambda()>' to non-scalar type 'std::map<int, int>' requested
И да, я знаю, что я могу создать еще один «нормальный» функцию для того, муравей он работает, но лямбды не может инициализировать объекты, которые путь.
Я думаю, вы пропустили '-> std :: map' в объявлении лямбда. –
theV0ID
@ theV0ID, тип возврата не требуется на лямбда, если его можно вывести из оператора return (как это может быть здесь). (Замечание: если список параметров пуст, как и здесь, он также является необязательным. Таким образом, это можно было бы написать, используя: 'static auto myMap = [] {return std :: map();}(); ') –