24

我试过这个:

#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

是的,我知道我可以为它创建另一个“正常”函数,它可以工作,但 lambdas 不能以这种方式初始化对象。

4

1 回答 1

41

是的,这确实是可能的。

static std::map<int,int> myMap = [](){
  std::map<int,int> myMap;
  return myMap;
}();

注意()最后。您正在分配myMap一个 lambda,但您确实想将其分配给 lambda 的结果。你必须为此打电话。

于 2013-03-22T23:57:11.133 回答