【发布时间】:2018-12-05 16:38:40
【问题描述】:
这是我的测试代码:
void test(std::vector<int> vec){};
void test(std::vector<int> && vec){};
int main(int argc, char * argv[])
{
std::vector<int> v;
test(v);
test(std::move(v));
return 0;
}
当我尝试调用test(std::move(v)) 时,我被告知test 是多重实现的。显然,我使用 std::move 使 v 成为右值。不会专门调用test(std::vector<int> &&)吗?
【问题讨论】:
-
“多重实现”是什么意思?为什么不通过在两个重载中打印不同的内容来尝试一下呢?
-
@Nelfeal 在函数中打印某些内容不会改变编译时错误:ideone.com/6X3Uhf
-
@mch 好点。我没有立即看到 OP 的问题是什么,因为没有任何迹象。