【发布时间】:2013-03-16 12:37:45
【问题描述】:
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) ) 这条线不满意? (可能这段代码没有意义)
【问题讨论】:
-
你究竟是如何移动一个数组的?您可以将一个数组的元素移动到另一个数组,但不能移动数组本身。
-
仅用于教育目的
-
我认为编译器抱怨它无法创建对数组的右值引用。这只是谷歌搜索“&& C++11”的猜测,因为我对 C++11 几乎一无所知。
标签: c++ visual-c++ c++11 move move-semantics