如果我有,
void foo(Bar c);
void foo(Bar&& c);
foo(Bar());
为什么对'foo'的调用是模棱两可的? foo参数中的Bar()显然不是rValue吗?
答案 0 :(得分:4)
绑定到引用是一个“完全匹配”,因为绑定到非引用,所以两个重载都同样好。
在Standardese中,这是13.3.3.1.4(“引用绑定”,[over.ics.ref]):
当引用类型的参数直接(8.5.3)绑定到参数表达式时,隐式转换序列是标识转换[...]