我读了std::for_each
这里http://en.cppreference.com/w/cpp/algorithm/for_each的文档,发现返回值是std::move(f)
为什么for_each的通过移动
为什么标准中强制执行的返回值移动输入参数恢复功能?无论如何,它会不会被默认移动,因为输入参数是按值传递的?
这使我一对夫妇followups,当你编译下面的代码
Something function(Something something) {
return something;
}
return语句是我的系统上的举动最高优化级别(
-O3
)为什么大多数编译器不会退出这个返回值?本地值被省略,但函数参数不是..在这种情况下,C++ 17是否强制使用?我阅读了提案(http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0135r0.html),但我并不完全了解哪些情况符合强制性的要求。
我已经在我的Mac和g++ 5.4
在Ubuntu 16.04试过这对Apple LLVM version 8.0.0 (clang-800.0.42.1)
。
你为什么说退出函数参数是不合法的?我查看它的函数参数值的方式与局部变量相同,只是构造和破坏的顺序未指定。 – Curious
@Curious:用C++ 17的引用更新来解决这个问题。 –
最后一件事。为什么该提案不允许从函数论点中删除?我只是想了解决定背后的原因。 – Curious