假设我想增量地收集元组(或等效的异构容器)中的数据,即增量地向元组添加另一个值(和类型)。
这些方面的东西(名称和语法是组成的):
growable_tuple tup;
tup.push_back(42);
//...
tup.push_back("Hello");
//...
tup.push_back(' ');
//...
tup.push_back("World"s);
static_assert(4 == std::tuple_size<tup::type>::value); // or
assert(4 == tup.size());
我可以使用std::tuple_cat
,但我需要将结果复制并存储在每个这样的不同局部变量中cat
。
我不能使用std::any
,因为我不知道包含的类型。有没有这样一种方法可以提取包含的类型any
?
是否有可能有一个局部变量支持这种“插入”,最好不复制?
Hana有这样的设施吗?
基本上,我想要一个不会擦除类型的异构容器,以便以后可以访问它们。
我还可以假设插入不依赖于运行时(没有运行时循环插入)。
具体来说,我可以手动查看添加到元组的所有类型(和索引)的代码,并使用它来定义我的初始元组。所有数据在编译时都存在。
我想知道如果没有事先手动指定元组类型就没有办法做到这一点。
一种明显的方法是增量序列化数据(例如到 json)并稍后重新解析它,但这似乎有点迂回。