cp std::move
时间: 2023-10-18 21:05:05 浏览: 160
在++11中,std::move是一个非常有用的函数,它将一个左值强制转化为右值引用,以实现移动语义。在使用std::move时,有两个折叠公式需要注意。
公式一)X&& &,X&& &&,X&& & &&都折叠成X&&,用于处理左值。例如,如果有一个左值string s("hello"),使用std::move(s)时,std::move(string&)会折叠成std::move(string&),最终得到std::move(string&)。这个过程中,T的类型为string&,typename remove_reference<T>::type为string。整个std::move被实例化为string&& move(string& t) {return static_cast<string&&>(t);},即返回一个右值引用。
公式二)X&& &&折叠成X&&,用于处理右值。例如,如果有一个右值string("hello"),使用std::move(string("hello"))时,std::move(string&&)会折叠成std::move(string&&),最终得到std::move(string&&)。这个过程中,T的类型为string,typename remove_reference<T>::type为string。整个std::move被实例化为string&& move(string&& t) {return static_cast<string&&>(t);},即返回一个右值引用。
综上所述,cp std::move表示将一个左值或右值移动到变量cp中,具体是使用std::move函数将左值转化为右值引用,以实现移动语义。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [c++ 之 std::move 原理实现与用法总结](https://blog.csdn.net/p942005405/article/details/84644069)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文