原理是因为int&会被隐式转换成float&&,而float&会被隐式转换成int&&。 #include <iostream> using namespace std; void f(int&& ) { cout << "int"; } void f(float&&) { cout << "float"; } void p(int &x) { f(x); } void p(float &x) { f(x); } int main() { float x=1.0; int y=2; p(x); p(y); } 至于为什么会这么转换,我个人认为可能是bug。
15 4

相关推荐

不愿透露姓名的神秘牛友
10-18 23:56
已编辑
好未来 产品经理 15*15 硕士211
点赞 评论 收藏
分享
牛客网
牛客企业服务