我注意到一些情况,其中std :: pair将被隐式转换为不同类型的std :: pair而没有警告,但我无法弄清楚原因。我已经查看了std :: pair的构造函数,并且无法弄明白。有人可以向我解释一下吗?
示例:
std::pair<int,int> a = std::pair<int64_t, int64_t>(1,2);
没有使用clang -Wall -Weverything发出警告。
答案 0 :(得分:2)
构造函数
template<class U, class V> pair(const pair<U, V>& p);
允许从任何对进行复制,前提是p
的第一个元素可以转换为正在构造的对的第一个元素,对于第二个元素也是如此。