代码之家  ›  专栏  ›  技术社区  ›  fredoverflow

FCD中的R值和临时对象

  •  5
  • fredoverflow  · 技术社区  · 15 年前

    我花了很长时间才理解rvalue和临时对象之间的区别。但现在委员会的最终草案在第75页上写道:

    R值 [...] 临时物品

    我不敢相信我的眼睛。这一定是个错误,对吧?


    为了澄清,以下是我对术语的理解:

    #include <string>
    
    void foo(std::string&& str)
    {
        std::cout << str << std::endl;
    }
    
    int main()
    {
        foo(std::string("hello"));
    }
    

    在这个程序中,有两个 表示相同的 临时对象 std::string("hello") 左值呢 str

    2 回复  |  直到 13 年前
        1
  •  2
  •   Johannes Schaub - litb    15 年前

    是的,我同意你的看法。在我看来,这应该是固定的,我非常尊敬的几个人也提出了同样的问题。

        2
  •  0
  •   quantum    12 年前

    xvalue(过期值)也指对象,通常在 示例)。 xvalue是某些表达式的结果 涉及右值引用 (8.3.2).

    临时对象(12.2)或其子对象,或不是

    因此,只有在处理“涉及rvalue引用的特定类型的表达式”时,才会得到xvalue。否则你的临时对象就是临时对象。