类似元组,类似对组
来自 zh.cppreference.net
template< class T >
concept tuple-like = /* see below */;
|
(1) | (C++23 起) (仅用于阐述*) |
template< class T >
concept pair-like =
tuple-like<T> && std::tuple_size_v<std::remove_cvref_t<T>> == 2;
|
(2) | (C++23 起) (仅用于阐述*) |
1) 类型
T 建模并满足概念 tuple-like 的条件是:std::remove_cvref_t<T> 是以下类型的特化:
- std::array、
|
(C++26 起) |
- std::pair、
- std::tuple 或
- std::ranges::subrange。
2)
pair-like 对象是恰好有 2 个元素的 tuple-like 对象。注释
tuple-like
类型实现了
元组协议
,即此类类型可与
std::get
、
std::tuple_element
及
std::tuple_size
配合使用。
tuple-like
类型的元素可以通过
结构化绑定
进行绑定。
参见
tuple-like
和
pair-like
在以下标准库组件中使用:
构造新的
tuple
(公开成员函数) |
|
将一个
tuple
的内容赋值给另一个
(公开成员函数) |
|
|
(C++20 中移除)
(C++20 中移除)
(C++20 中移除)
(C++20 中移除)
(C++20 中移除)
(C++20)
|
按字典序比较 tuple 中的值
(函数模板) |
确定
tuple
与
tuple-like
类型的共同引用类型
(类模板特化) |
|
|
(C++23)
|
确定
tuple
与
tuple-like
类型的共同类型
(类模板特化) |
|
(C++11)
|
通过连接任意数量的 tuple 来创建
tuple
(函数模板) |
|
(C++17)
|
以 tuple 参数调用函数
(函数模板) |
|
(C++17)
|
以 tuple 参数构造对象
(函数模板) |
构造新的
pair
(
std::pair<T1,T2>
的公开成员函数)
|
|
|
赋值内容
(
std::pair<T1,T2>
的公开成员函数)
|
|
将
subrange
转换为
pair-like
类型
(
std::ranges::subrange<I,S,K>
的公开成员函数)
|
|
接受由
tuple-like
值组成的
view
和数字 N,生成每个 tuple 第 N 个元素的
view
(类模板) (范围适配器对象) |