§3.10 第 9 节说“非类右值总是有 cv 非限定类型”。这让我想知道...
int foo()
{
return 5;
}
const int bar()
{
return 5;
}
void pass_int(int&& i)
{
std::cout << "rvalue\n";
}
void pass_int(const int&& i)
{
std::cout << "const rvalue\n";
}
int main()
{
pass_int(foo()); // prints "rvalue"
pass_int(bar()); // prints "const rvalue"
}
根据标准,非类类型没有 const rvalue 这样的东西,但bar()
更喜欢绑定到const int&&
. 这是编译器错误吗?
编辑:显然,this
也是一个 const rvalue :)
编辑:这个问题似乎在 g++ 4.5.0 中得到修复,现在两行都打印“rvalue”。