std::pair 的推导指引 来自cppreference.com < cpp | utility | pair C++ 语言 标准库头文件 自立与有宿主实现 具名要求 语言支持库 概念库 (C++20) 诊断库 工具库 字符串库 容器库 迭代器库 范围库 (C++20) 算法库 数值库 本地化库 输入/输出库 文件系统库 (C++17) 正则表达式库 (C++11) 原子操作库 (C++11) 线程支持库 (C++11) 技术规范 工具库 语言支持 类型支持(基本类型、 RTTI 、类型特征) 库功能特性测试宏 (C++20) 动态内存管理 程序工具 错误处理 协程支持 (C++20) 变参数函数 launder(C++17) initializer_list(C++11) source_location(C++20) 三路比较 (C++20) three_way_comparablethree_way_comparable_with(C++20)(C++20) strong_ordering(C++20) weak_ordering(C++20) partial_ordering(C++20) common_comparison_category(C++20) compare_three_way_result(C++20) compare_three_way(C++20) strong_order(C++20) weak_order(C++20) partial_order(C++20) compare_strong_order_fallback(C++20) compare_weak_order_fallback(C++20) compare_partial_order_fallback(C++20) is_eqis_neqis_ltis_lteqis_gtis_gteq(C++20)(C++20)(C++20)(C++20)(C++20)(C++20) 通用工具 日期和时间 函数对象 格式化库 (C++20) bitset hash(C++11) integer_sequence(C++14) 关系运算符 (C++20 中弃用) rel_ops::operator!=rel_ops::operator>rel_ops::operator<=rel_ops::operator>= 整数比较函数 cmp_equalcmp_not_equalcmp_lesscmp_greatercmp_less_thancmp_greater_than(C++20)(C++20)(C++20)(C++20)(C++20)(C++20) in_range(C++20) swap 与类型运算 swap ranges::swap(C++20) exchange(C++14) declval(C++11) forward(C++11) move(C++11) move_if_noexcept(C++11) as_const(C++17) 常用词汇类型 pair tuple(C++11) apply(C++17) make_from_tuple(C++17) optional(C++17) any(C++17) variant(C++17) 初等字符串转换 to_chars(C++17) from_chars(C++17) chars_format(C++17) std::pair 成员函数 pair::pair pair::operator= pair::swap 非成员函数 make_pair operator==operator!=operator<operator<=operator>operator>=operator<=>(C++20 前)(C++20 前)(C++20 前)(C++20 前)(C++20 前)(C++20) std::swap get(C++11) 推导指引(C++17) 辅助类 tuple_size(C++11) tuple_element(C++11) 定义于头文件 <utility> template<class T1, class T2> pair(T1, T2) -> pair<T1, T2>; (C++17 起) 为 std::pair 提供一个推导指引,以涵盖隐式推导指引所遗漏的极端情况。 特别是不可复制参数及数组到指针转换。 示例 运行此代码 #include <utility> int main() { int a[2], b[3]; std::pair p{a, b}; // 显示推导指引用于此情况 }