#include <vector>
using namespace std;
vector<int> f()
{
return{};
}
// Update: Below is not compilable
void g(vector<int>)
{}
// Update: Below is the my initial intent.
/*
void g(const vector<int>&)
{}
*/
void g(vector<int>&&)
{}
int main()
{
auto v1 = f();
auto&& v2 = f();
g(forward<vector<int>>(v1));
g(forward<vector<int>>(v2));
}
请问C++ 11的保证g(forward<vector<int>>(v1))
会打电话f(vector<int>)
或f(const vector<int>&)
和g(forward<vector<int>>(v2))
将调用f(vector<int>&&)
?“auto v = f()”和“auto && v = f()”有什么区别?
这不能在我的机器上编译。调用g()是不明确的。所以这个问题实际上应该是为什么会发生。 – zett42
我强烈建议恢复编辑,您的更改会使现有答案无效。或者在编辑中发布附录,而不更改原始代码 –
@ M.M,根据您的建议更新了文章。 – xmllmx