【发布时间】:2019-06-21 16:07:51
【问题描述】:
给定一个包含不同类型元素的元组(没有两个是相同的):
typedef std::tuple<bool, char, int, float, double, std::string> t1;
以及包含限制为这些类型的元素的元组类型(可以重复和省略,但不能有其他类型):
typedef std::tuple<char, int, int, double, std::string, int, double> t2;
如何为t2 中的元素构造一个std::array,其中包含t1 中匹配元素的索引?
{1, 2, 2, 4, 5, 2, 4}
【问题讨论】:
-
如果您的最终目标是使用这些索引从 t1 中提取元素,您可以只使用
std::get<T>(t1),其中T是t2中的每个类型 -
@Eric 我的最终目标是用 t1 中的索引识别 t2 元素类型(现在在我的代码中 t1 是 std::variant)。并使用这个 'type_id' 我序列化和反序列化 t2 到/从二进制流。
标签: c++ tuples c++17 template-meta-programming stdtuple