2014-04-29 44 views
0

我正在學習Koffman和Wolfgang編寫的教科書中的對。他們給make_pair的樣本實現看起來是這樣的:爲什麼std :: make_pair返回一對引用類型

template<typename Type1, typename Type2> 
    make_pair(const Type1& first_value, const Type2& second_value) { 
    return pair<Type1&, Type2&>(first_value, second_value); 
    } 

我不明白爲什麼他們使用的Type1 &和type2 &在return語句,而不是僅僅Type1和Type2實例對模板。

+5

這不能工作,沒有返回類型... –

+2

這只是本書中的錯誤。 –

+0

我只是看了一下那本書的開頭,以及... – PlasmaHH

回答

6

據我所知make_pair原型如下:

template<class Type1, class Type2> 
std::pair<Type1,Type2> make_pair(Type1 first_value, Type2 second_value); 

(注:因爲C++ 11略有不同)

也見http://en.cppreference.com/w/cpp/utility/pair/make_pair

這也是標準在§20.3.3 [pairs.spec]中所說的內容。所以這一定是本書中的一個錯誤(或者你可能忽視了某些內容)。

相關問題