这个问题刚出现在我脑海中,我真的不知道如何解决这个问题。
让我告诉你我的意思:
int x = 1;
auto lambda1 = [x](){
// do something with x, not specified here though
}
auto lambda2 = [](int x){
// do something with x, not specified here though
}
lambda1();
lambda2(x);
假设我们在给定时间只有lambda1或lambda2。
在这种情况下哪个功能会更快?我很确定差异很小,如果有任何差别,但这只是引起了我的兴趣,我真的很想知道!
如果我们只使用一个int,这可能是非常愚蠢的,但是在更大的缩放lambda中可能存在可测量的差异。
答案 0 :(得分:3)
第一个转换为
struct _ {
int x;
_(int x_): x(x_) {}
void operator()() const {...}
};
第二个转换为
struct _ {
_() = default;
void operator()(int x) const {...}
};
前者可能会在闭包施工现场周围产生各种影响*,后者可能会在闭合呼叫站点周围产生相同的效果。
* - 取决于