Joh*_*itb 39 c++ rvalue-reference c++11
我想知道一个右值引用成员有什么用
class A {
// ...
// Is this one useful?
Foo &&f;
};
Run Code Online (Sandbox Code Playgroud)
与左值参考成员相比,它有任何好处或缺点吗?什么是它的主要用途?
How*_*ant 24
我已经看到了rvalue引用数据成员的一个非常激励的用例,它在C++ 0x草案中:
template<class... Types>
tuple<Types&&...>
forward_as_tuple(Types&&... t) noexcept;
Run Code Online (Sandbox Code Playgroud)
效果:构造一个对t中参数的引用元组,适合作为参数转发给函数.因为结果可能包含对临时变量的引用,所以程序应确保此函数的返回值不会超过其任何参数.(例如,程序通常不应将结果存储在命名变量中).
返回:
tuple<Types&&...>(std::forward<Types>(t)...)
当rvalues用作forward_as_tuple的参数时,元组具有rvalue引用数据成员,否则具有左值引用数据成员.
我发现forward_as_tuple随后在需要捕获可变参数时很有用,完美地将它们打包为元组,然后在转发到仿函数时重新展开它们.在实现LWG 1385中提出的增强版tuple_cat时,我使用了这种风格的forward_as_tuple:
http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#1385
fre*_*low 13
根据Stephan T. Lavavej的说法,rvalue参考数据成员没有用.
我看到程序员在掌握右值引用时所做的事情是,他们开始变得有点疯狂,因为它们非常强大.他们开始说"哦,我将有rvalue参考数据成员,我将有rvalue引用局部变量,我将有rvalue引用返回值!" 然后他们写这样的代码:[...]
归档时间: |
|
查看次数: |
5054 次 |
最近记录: |