2
在C++ 11標準下,是否保證將下列對移入函數中?這對會被搬走嗎?
//objects available: key, value
//corresponding type available: pairtype
//function available: void foo(pairtype pair); copies the pair by default
foo({std::move(key),std::move(value)}); //pair moved?
還是我必須自己動手?
foo(std::move(pairtype(std::move(key),std::move(value))); //needed?
我認爲明確的構造函數只不與列表複製initalization認爲,這將是固定在C++ 14 – TemplateRex
@TemplateRex:不知道關於C++ 14,但在C++ 11中,將參數傳遞給函數是複製初始化上下文(請參見8.5/15和8.5.4/1)。由於這裏我們是列表初始化,這是一個複製列表初始化(見8.5.4/1),適用的是8.5.4/3(第4個項目符號)和13.3.1.7/1。 –
啊是的,我太快讀了Q.那麼這同樣適用於'emplace'就像函數(採用右值引用)?他們是否也可以不調用顯式構造函數? – TemplateRex