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