2
void ThreadFn(int& i)
{
cout<<"Hi from thread "<<i<<endl;
}
int x = 0;
void CreateThreads(vector<thread>& workers)
{
for(int i = 0; i< 10; i++)
{
workers.push_back(thread(&ThreadFn, x));
}
}
我期待一個編譯錯誤在線程創建(workers.push_back(thread(&ThreadFn, x));
)因爲x
應由REF進行傳遞。 不過,我覺得正確的語法應該已經:通過引用傳遞到std ::螺紋的C++ 0x在VS2012
workers.push_back(thread(&ThreadFn, std::ref(x)));
當然,代碼編譯罰款,也表現正常。我正在使用VC11
。任何想法爲什麼這不被標記?