rvalue-reference相关内容

minmax返回可修改的引用

有了C ++的所有新功能(我认为C ++ 11就足够了),是什么阻止了 std :: minmax 函数返回一对引用的。 这样,如果一个提供两个可修改的引用,则可以对其进行修改。 #include //也许所有这些选项都可以简化 template共同结构 template struct com ..
发布时间:2020-09-27 22:08:28 其他开发

是临时对象xvalue吗?

我目前正在写学位论文,其中还涉及对C ++ 11背后理论的一些解释,这很好,因为C ++是我选择的编程语言,并且该标准或多或少是免费的(N3337) 但是我在尝试准确而详细地解释新的xvalue类别时碰壁了。 据我了解,临时对象始终是xvalue,但我在标准中找不到该引用。据我了解,函数表达式的值类别调用了一个函数,具有非引用返回类型,是xvalue。该标准说:“ xvalue是某些包含rv ..
发布时间:2020-09-27 21:48:37 C/C++开发

可以将std :: function从右值引用移动构造到临时函子对象吗?

我有一个未模板化的仿函数对象,试图将它作为 std :: function 存储在另一个对象中。该对象确实是重量级的,因此标记为不可复制,但确实具有move构造函数。但是,尝试从临时构造函数构造或分配std :: function失败。 以下是引发错误的最小示例。 / /假装这是一个无法复制的重量级函子。 struct ExampleTest { int x; int ..
发布时间:2020-09-27 21:35:29 C/C++开发

C ++“移出”容器

在C ++ 11中,当我们想将值(破坏性地复制)移动到容器中时,可以使用 std :: move 来提高效率。 SomeExpensiveType x = / * ... * /; vec.push_back(std :: move(x)); 但是我找不到其他方法。我的意思是这样的: SomeExpensiveType x = vec.back(); //复 ..
发布时间:2020-09-27 20:38:07 C/C++开发

右值参考参数和模板功能

如果我定义一个接受右值引用参数的函数: template void fooT(T& x){} 我可以这样称呼,使用GCC 4.5,使用 a , ar 或 arr : int a,& ar = a,&& arr = 7; fooT(a); fooT(ar); fooT(arr); 但是,调用类似的 non-tem ..
发布时间:2020-09-27 20:34:23 C/C++开发

返回const引用和右值引用之间的区别

如果我没记错,我认为const引用和右值引用都可以绑定到右值。返回前者的函数和返回后者的函数有什么实际区别? EDIT。我不能修改前者,但是为什么我会对修改右值感兴趣? 解决方案 一个 const 左值引用可以绑定到任何东西。右值引用只能绑定到非 const 右值。 非-const左值const左值非常量右值const右值 const T&是是是是 T&&否否是否 ..
发布时间:2020-09-27 20:21:51 C/C++开发

参考超载,而不是唯一的传递值+ std :: move?

关于C ++ 0x右值的主要建议似乎是在类中添加move构造函数和move运算符,直到编译器默认实现它们为止。 但是等待如果您使用VC10,这是一个失败的策略,因为在VC10 SP1或最坏的情况下,直到VC11,自动生成可能不会出现。 这是我的问题所在。编写所有这些重复的代码并不有趣。而且令人讨厌。但这对于那些认为很慢的班级来说是一个很好的负担。 :: sighs :: C ++ ..
发布时间:2020-09-27 20:04:55 C/C++开发

什么是对函数类型的右值引用?

我最近将思想集中在C ++ 0x的glvalues,xvalues和prvalues以及rvalue引用的概念上。但是,还有一件事让我难以理解: 什么是“对函数类型的右值引用” ?草案中多次提到它。为什么引入这样的概念? 解决方案 我讨厌循环,但对函数类型的右值引用是对功能类型。有诸如函数类型之类的东西。 void()。您可以形成对此的右值引用。 根据 N3055 ,它是一个x ..
发布时间:2020-09-27 18:47:10 其他开发