gpt4 book ai didi

c++ - 非类右值总是有 cv 非限定类型

转载 作者:IT老高 更新时间:2023-10-28 12:37:54 26 4
gpt4 key购买 nike

§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() 更喜欢绑定(bind)到 const int&&。这是编译器错误吗?

编辑:显然, this 也是一个 const rvalue :)

编辑:这个问题似乎在 g++ 4.5.0 中得到修复,现在两行都打印“rvalue”。

最佳答案

委员会似乎已经意识到标准的这一部分存在问题。 CWG issue 690在标准的相同部分讨论了一个有点相似的问题(在 2009 年 9 月的“附加说明”中)。我猜很快就会为标准的这一部分起草新的语言。

编辑:我刚刚在 comp.std.c++ 上提交了一篇文章,指出了问题并为标准的相关部分提出了新的措辞。不幸的是,作为一个有节制的新闻组,当它通过那里的批准队列时,几乎每个人都可能已经忘记了这个问题。

关于c++ - 非类右值总是有 cv 非限定类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2169932/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com