#include <iostream>
struct A
{
void f() const &
{
std::cout << "A::f()&" << std::endl;
}
void f() const &&
{
std::cout << "A::f()&&" << std::endl;
}
};
struct B
{
void f() const &
{
std::cout << "B::f()&" << std::endl;
}
};
int main()
{
A{}.f();
B{}.f();
}
输出是:
答::f()&&
B::f()&
注意void B::f() const &&
不存在。
对我来说,应该选择B
调用的临时对象,或者应该引发编译器错误。B::f
void B::f() const &&
为什么会void B::f() const &
在这种情况下选择?