相关疑难解决方法(0)

为什么lambda不会从达到范围捕获类型const double,但const int是?

我似乎无法理解为什么下面的类型为const int的代码编译:

int main()
{
  using T = int;
  const T x = 1;
  auto lam = [] (T p) { return x+p; };
}
$ clang++ -c lambda1.cpp  -std=c++11
$
Run Code Online (Sandbox Code Playgroud)

而这个类型为const double的那个不是:

int main()
{
  using T = double;
  const T x = 1.0;
  auto lam = [] (T p) { return x+p; };
}
$ clang++ -c lambda2.cpp  -std=c++11
lambda1.cpp:5:32: error: variable 'x' cannot be implicitly captured in a lambda with no capture-default specified
  auto lam = [] …
Run Code Online (Sandbox Code Playgroud)

c++ lambda constexpr c++11

12
推荐指数
2
解决办法
832
查看次数

标签 统计

c++ ×1

c++11 ×1

constexpr ×1

lambda ×1