从元组或可变参数模板参数创建数组初始化器
处理需要嵌入到程序代码中的持久内存布局时,需要静态地表示布局的描述。这涉及将特定 ID 绑定到布局,在编译时计算偏移量,以及创建一个可以在运行时迭代的数组初始值设定项,而不受 std::get(std::tuple) 的限制。
可变参数模板方法
要启用编译时累积和序列创建,请考虑使用可变参数模板。每个条目可以由标识符以及特定元素的大小或类型组成。顶级条目包被定义为“布局”模板,每个条目都由一个“条目”模板表示。
示例用法
<code class="cpp">template<std::size_t offset, typename Key, typename... Entries> struct LayoutHelper { typedef std::tuple<> type; }; template<typename Key, typename... Entries> struct Layout:LayoutHelper<0, Key, Entries...>;</code>
<code class="cpp">template<typename Key, Key identifier, typename Data> struct Entry {};</code>
要使用此方法:
<code class="cpp">Layout< FooEnum, Entry< FooEnum, eFoo, char[10]>, Entry< FooEnum, eFoo2, double> > layout;</code>
实现前置模板以将元素添加到元组前面后,Layout
其他注意事项
以上是如何在 C 中从元组或可变参数模板构建静态数组初始值设定项?的详细内容。更多信息请关注PHP中文网其他相关文章!