首页 > 解决方案 > 为什么要定义一个返回结构的 lambda 函数而不是直接定义结构?

问题描述

我看过一些基本上可以做到这一点的代码:

struct A {
  int a;
  int b;
};

static A default_a = []() {
  A ret;
  ret.a = 1;
  ret.b = 2;
  return ret;
}();

为什么这样写?我会写:

static A default_a {
  .a = 1,
  .b = 2,
};

这些中的任何一个都是首选吗?

标签: c++lambda

解决方案


对我来说看起来像是一个重构工件。过去的代码用来做一些不同的事情,需要更复杂的初始化代码。该代码在某个时候被删除,但 lambda 保留了下来。


推荐阅读