12
我已经试过这样:是否可以用lambda初始化静态变量?
#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
是的,我知道,我可以创造另一种“正常”功能蚂蚁它的工作原理,但lambda表达式不能初始化的对象办法。
我想你错过了lambda声明中的' - > std :: map''。 –
theV0ID
2014-01-24 13:12:00
@ theV0ID,如果可以从返回语句中推导出返回类型,则返回类型对于lambda表达式不是必需的(因为它可以在这里)。 (注意:如果参数列表是空的,因为它在这里,所以它也是可选的。因此,这可以写成:'static auto myMap = [] {return std :: map();}(); ') –
2016-04-20 23:24:58