如果我有两个重载函数,比如
void f1(const char(&)[4]) {
std::cout << "f1 lvalue" << std::endl;
}
void f1(char(&&)[4]) {
std::cout << "f1 rvalue" << std::endl;
}
当我打电话时
char s[] = "asd";
f1(move(s));
f1(s);
他们都用左值版本调用
f1
。
那么如何通过变量来调用右值版本的f1
,或者是否可行。或者说,我的f1
的重载版本有什么错误吗?
已添加 在 msvc x64 下使用 -std=c++17
这是 v.14 和 v.15 Microsoft 编译器的一个错误。使用较新的编译器或避免原始数组移动。
还有其他问题:带有数组的结构的移动构造函数错误