可以将 char[] 移至右值吗?

问题描述 投票:0回答:1

如果我有两个重载函数,比如

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

c++ overloading
1个回答
0
投票

这是 v.14 和 v.15 Microsoft 编译器的一个错误。使用较新的编译器或避免原始数组移动。

还有其他问题:带有数组的结构的移动构造函数错误

© www.soinside.com 2019 - 2024. All rights reserved.