我试过这个:
#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不能以这种方式初始化对象。
答案 0 :(得分:34)
是的,确实有可能。
static std::map<int,int> myMap = [](){
std::map<int,int> myMap;
return myMap;
}();
注意最后的()
。您正在将myMap
分配给lambda,但您确实希望将其分配给lambda的结果。你必须为此调用它。