为什么从pair <int64_t,int64_t>隐式转换为pair <int,int>允许?</int,int> </int64_t,int64_t>

时间:2014-08-27 19:19:10

标签: c++ c++11 implicit-conversion std-pair

我注意到一些情况,其中std :: pair将被隐式转换为不同类型的std :: pair而没有警告,但我无法弄清楚原因。我已经查看了std :: pair的构造函数,并且无法弄明白。有人可以向我解释一下吗?

示例:

 std::pair<int,int> a = std::pair<int64_t, int64_t>(1,2);

没有使用clang -Wall -Weverything发出警告。

1 个答案:

答案 0 :(得分:2)

构造函数

template<class U, class V> pair(const pair<U, V>& p);

允许从任何对进行复制,前提是p的第一个元素可以转换为正在构造的对的第一个元素,对于第二个元素也是如此。