【问题标题】:Why is pass by value and pass by rvalue overload c++ function call ambiguous?为什么按值传递和按右值传递重载c ++函数调用不明确?
【发布时间】:2016-04-18 14:05:51
【问题描述】:

如果有的话,

void foo(Bar c);
void foo(Bar&& c);

foo(Bar()); 

为什么对“foo”的调用是模棱两可的? foo 参数中的 Bar() 显然不是 rValue 吗?

【问题讨论】:

标签: c++ c++11 rvalue


【解决方案1】:

绑定到引用是“完全匹配”,绑定到非引用也是如此,因此两个重载都同样好。

在 Standardese 中,这是 13.3.3.1.4(“引用绑定”,[over.ics.ref]):

当引用类型的参数直接(8.5.3)绑定到参数表达式时,隐式转换序列是恒等转换[...]

【讨论】:

    猜你喜欢
    • 2013-08-20
    • 2016-10-22
    • 1970-01-01
    • 2023-03-07
    • 2018-01-20
    • 1970-01-01
    • 2015-05-21
    相关资源
    最近更新 更多