gpt4 book ai didi

c++ - C++03 中的右值

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:16:35 25 4
gpt4 key购买 nike

在 C++03 中如何判断给定参数是否为右值?我正在编写一些非常通用的代码,如果可能的话我需要引用,否则就需要构建一个新对象。我可以重载以按值和按引用获取并让右值返回调用按值函数吗?

或者我是否有一种非常令人作呕的感觉,这就是右值引用在 C++0x 中的原因?

编辑:

is_rvalue = !(is_reference || is_pointer) ?

最佳答案

在 C++03 中显然有一种方法可以确定表达式是右值还是左值(我说显然是因为我不确定我对这项技术的理解程度)。请注意,要使该技术可用,非常需要预处理器宏。 Eric Niebler 写了一篇关于它如何工作以及如何在 BOOST_FOREACH 中使用它的好文章:

请注意,这篇文章的阅读量很大(至少对我来说是这样);正如 Neibler 在其中所说:

There's no doubt that this is arcane stuff, but we are rewarded with a robust way to detect the rvalue-ness and lvalue-ness of any expression.

使用文章中描述的右值检测可能会帮助您至少解决 C++0x 的右值引用解决的一些问题。

关于c++ - C++03 中的右值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3025421/

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