deb*_*air 5 c++ lambda initialization
#include <iostream>
using namespace std;
int main()
{
static bool temp([]{
cout <<"Hi ";
return false;});
cout <<"temp "<< temp;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它不执行 lambda。但是如果我们单独声明 lambda 像:
#include <iostream>
using namespace std;
int main()
{
auto lambda = []{
cout <<"Hi ";
return false;};
static bool temp(lambda());
cout <<"temp "<< temp;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它会执行它。我在这里缺少什么?
son*_*yao 10
您需要调用 lambda,就像第二个代码片段一样。
static bool temp([]{
cout <<"Hi ";
return false;}());
// ^^
Run Code Online (Sandbox Code Playgroud)
PS:在第一个代码片段temp
中将始终初始化为true
,因为没有捕获列表的lambda可以隐式转换为函数指针;这是一个非空指针,然后可以转换为bool
with value true
。
归档时间: |
|
查看次数: |
305 次 |
最近记录: |