为什么std :: make_pair返回一对引用类型
问题描述:
我正在学习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实例对模板。
答
据我所知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]
中所说的内容。所以这一定是本书中的一个错误(或者你可能忽视了某些内容)。
这不能工作,没有返回类型... –
这只是本书中的错误。 –
我只是看了一下那本书的开头,以及... – PlasmaHH