繁体   English   中英

为什么是对的隐式转换 <int64_t,int64_t> 配对 <int,int> 允许?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM