我注意到有些情况下 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
的第一个元素可以转换为正在构造的对中的第一个元素,第二个元素也是如此。
关于c++ - 为什么允许从 pair<int64_t,int64_t> 到 pair<int,int> 的隐式转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25535311/