【发布时间】:2018-01-23 22:34:06
【问题描述】:
我的问题是,将 std::move(或不)prvalue 放入一个包罗万象的函数模板中是否有意义,该模板相应地在其签名中采用通用引用 T&&。另外我想知道复制移动省略/RVO 是否在这个决定中发挥了作用。
问题: 引用折叠是否会导致 foo 被 T&&(右值引用)调用,带有或不带 std::move 并且 RVO 对此(或对 RVO)有任何影响吗?
template < typename T >
void foo(T&& arg)
{
//Whatever..
}
A func()
{
A m;
return m;
}
// called anywhere you like
foo(std::move(func()));
提前致谢 山姆
【问题讨论】:
-
从了解
main()返回的内容开始...无论如何,这是一个模糊的问题或一组问题,我不敢相信 (A) 它还没有被回答或 ( B)你不能为它编写自己的测试。 -
我只是想强调一个具有主要功能的范围。重点在于通话和究竟发生了什么。无论如何,如果这有助于专注于这个问题,我会更正它。
-
是的,这更多是理论上的。我想知道应该发生什么,因此会发生什么,而不是我的特定编译器在做什么。这对我来说纯粹是研究,因为我不确定我是否正确理解了事件链。如果你不想帮忙,没关系。但也许其他人是。而我发现的现有主题还无法消除我的疑虑。
标签: c++11 move-semantics forwarding-reference prvalue