rt,下面的代码
#include<bits/stdc++.h>
#define pii pair<int,int>
using namespace std;
function<pii(pii)>rdc(double tx,double ty){
return [&](pair<int,int>x)->pii{return make_pair((int)(x.first*tx),(int)(x.second*ty));};
}
int main(){
cout<<rdc(0.81,0.81)({20,15}).first<<endl;
cout<<[&](pii x)->pii{return make_pair(x.first*0.81,x.second*0.81);}({20,15}).first<<endl;
}
会输出 0 16。它甚至没有任何的 Warning。
这两个东西看起来很等价的样子,但是硬调可以发现上面返回的 lambda 中的 tx(在我的电脑上)变成了 3.18299e-313。为什么会这样?