c++11左值右值

来源:互联网 发布:安畅网络个人用户 编辑:程序博客网 时间:2024/05/22 01:53

std::move 将参数变换为右值

template<typename T> 
decltype(auto) move(T&& param)
{
    using ReturnType = remove_reference_t<T>&&;
    return static_cast<ReturnType>(param);
}

如果变换到的类型有右值构造函数,执行之。


main调用一个函数foo(),参数押入stack, 把返回值空间预留,然后是代码stack, 如果做return value optimazation, 返回值不用原来fp 指向内容,而是直接用stack空间的值。

foo返回后,main从fp取返回值。

参考

https://www.ibm.com/developerworks/community/blogs/5894415f-be62-4bc0-81c5-3956e82276f3/entry/RVO_V_S_std_move?lang=en

https://www.cs.umd.edu/class/sum2003/cmsc311/Notes/Mips/stack.html

原创粉丝点击