[英]Why is implicit conversion from pair<int64_t,int64_t> to pair<int,int> allowed?
我注意到一些情况,其中std :: pair将被隐式转换为不同类型的std :: pair而没有警告,但我无法弄清楚为什么。 我已经查看了std :: pair的构造函数,但无法弄明白。 有人可以向我解释一下吗?
例:
std::pair<int,int> a = std::pair<int64_t, int64_t>(1,2);
clang -Wall -Weverything不会发出任何警告。
构造函数
template<class U, class V> pair(const pair<U, V>& p);
允许从任何对复制,前提是p
的第一个元素可以转换为正在构造的对的第一个元素,对于第二个元素也是如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.