This question很棒,因为它可以回答rvalue
,lvalue
,xvalue
,glvalue
和prvalue
之间的区别是什么。最佳答案对每个答案都有不错的解释,当我阅读它们时,我会理解它们之间的差异。但是,我很难把它们摆在脑海中,每当有人使用这些术语提醒自己是哪个术语时,我都必须在Google上搜索它们。
是否有任何常用的助记符或其他方式记住人们是哪一个?我真的很希望能够将它们笔直地放在脑海中,而不会像我目前所做的那样混淆它们。
最佳答案
我建立了2个关联:
std::move
表达式是如果两者都不是,则可能是prvalue。
现在,要记住glvalues和rvalues,我只是想像一下这张图:
左值和x值都是glvalue,而xvalue和prvalue都是rvalue。这实际上是您在实践中需要了解的所有内容。
可能记住lvaluse,xvalues和prvalues的助记符是
Lower eXPRessions
(它包含L,X和PR)。也许不会。