小编Daw*_*ski的帖子

具有宽松类型要求的C ++ 17 lambda捕获

我有以下代码,可以用C ++ 17编译器编译,但不能用C ++ 14编译。我想知道发生了什么变化,从而允许以下代码进行编译:

struct Foo{
  Foo()=default;
  Foo(const Foo&)=default;// copy by const ref 
};

struct Bar{
  Bar()=default;  
  Bar(Bar&)=default; //copy by non const
};

int main()
{
  Foo foo;
  Bar bar;
  Bar barcpy = bar;
  auto foolam = [foo]{};
  auto barlam = [bar]{}; //compiles only with C++17
}
Run Code Online (Sandbox Code Playgroud)

是否有任何确切的建议可以编译此代码,或者是通过其他功能实现的?

c++ lambda c++14 c++17

8
推荐指数
1
解决办法
133
查看次数

标签 统计

c++ ×1

c++14 ×1

c++17 ×1

lambda ×1