为什么std :: make_pair是通过值而不是const引用获取输入?

Ale*_*zzi 6 c++

请参阅此网站http://www.cplusplus.com/reference/std/utility/make_pair/

std :: make_pair具有此签名(以及可能的实现):

template <class T1,class T2>
pair<T1,T2> make_pair (T1 x, T2 y)
{
    return ( pair<T1,T2>(x,y) );
}
Run Code Online (Sandbox Code Playgroud)

我想知道为什么std :: make_pair有值输入参数而不是const引用?

这有什么特别的原因吗?

Bo *_*son 6

它最初通过const引用获取参数,但这引入了一些意想不到的问题.在缺陷报告后,它被更改为按值传递:

http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#181

预计编译器将内联函数并能够在大多数时间内优化掉参数.