c++ - 为什么允许从 pair<int64_t,int64_t> 到 pair<int,int> 的隐式转换?

标签 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 不发出警告。

最佳答案

构造函数

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/

相关文章:

c++ - 'operator*' 错误不匹配

java - 为什么在使用 += 将整数连接到字符串时 g++ 不发出警告/错误

c++ - 选择性隐式转换

scala - 隐式转换、类型参数、重载和匿名函数语法

c++ - 使用了自动释放但仍然泄漏

c++ - 将 double 写入 EEPROM

c++ - 用于使用类对象引用的 C++ 类函数的 Pthread

c++ - 重载解析在 gcc 和 clang 之间得到不同的结果

c++ - 链接 boolean 值给出与预期相反的结果

c++ - 使用 enable_if 选择特征 - 适用于 clang,但不适用于 gcc