struct Foo
{
char data[100];
template<int T>
Foo(char (&&var)[T])
{
data = std::move(var);
var = 0;
}
};
int main()
{
char v[100];
//..init v
Foo f(std::move(v)); //error C2664: 'Foo::Foo<100>(char (&&)[100])' : cannot convert parameter 1 from 'char [100]' to 'char (&&)[100]'
return 0;
}
我不明白为什么MSVC对行Foo f(std::move(v))
不满意? (也许这个代码是无意义的)移动构造函数和字符数组参数
你究竟如何移动一个数组?您可以将一个数组的元素移动到另一个数组,而不是数组本身。 – Praetorian 2013-03-26 16:26:15
它只是用于教育目的 – Guillaume07 2013-03-26 16:34:45
我认为编译器抱怨说它不能创建一个数组的右值引用。这只是一个猜测来自“&& C++ 11”,因为我几乎不了解C++ 11。 – 2013-03-26 16:40:26