Gle*_*leb 11 c++ arrays tuples
我正在研究一个aux模块,以在多态对象之间传递值,有时
std::array<void*, N>
Run Code Online (Sandbox Code Playgroud)
并且需要转发
std::tuple<void*, void*, /* N times */>
Run Code Online (Sandbox Code Playgroud)
我可以使用index_sequence
或/和递归来找到一些解决方案,但是所有这些看起来都很笨重并且难以阅读。
通过标准库,还有其他更直接的方法吗?
另外,以防万一-我是对的吗,布局std::array
是一组密集的各个对象,因此等于void**
各个长度,而元组的布局允许有间隙?
Sto*_*ica 17
如果您的实现支持,则可以使用std::tuple_cat
。在某些实现中,它将尊重元组接口(std::array
确实如此)的任意数量的对象连接成单个平面元组。连接单个类似元组的对象将只生成一个元组,其中包含所述源“元组”成员的副本。
std::array<void*, N> a;
auto b = std::tuple_cat(a);
Run Code Online (Sandbox Code Playgroud)
另外,以防万一-我是对的吗,布局
std::array
是一组密集的各个对象,因此等于void**
各个长度,而元组的布局允许有间隙?
A std::array
是一个集合,它将在void*[N]
内部保存。因此,是的,元素之间将没有填充。元组元素的布局未指定到这种程度。
归档时间: |
|
查看次数: |
229 次 |
最近记录: |