有人会解释为什么参考经过“身份”功能后失效,foo1
?是不是“地址”A
传入并返回foo1
?左值参考在通过身份识别功能后失效
struct A {
A(int x) : x_(x) {}
int x_;
};
int main() {
function<const A&(const A& r)> foo1 = [](const A& r) {
return r;
};
vector<A> vec{1, 2, 3};
cout << foo1(vec[0]).x_ << endl; // RUNTIME ERROR
return 0;
}
怎样的问题行不同于:
const A& r = vec[0];
const A& r1 = r;
我试着用vs2015和你的代码工作得很好。 – alangab
@alangab在VS2013中没有工作。 –
我以为lambda被称为'傻瓜'。那是愚蠢的。 –