小编Mat*_*man的帖子

想要:一个C++模板想法来解决问题,但是在编译时?

我们有一个const数组结构,如下所示:

static const SettingsSuT _table [] = {{5,1},{1,2},{1,1}等};

结构有以下几点:

  • size_bytes:
  • NUM_ITEMS:
  • 其他"元数据"成员

因此,对于单个元素,"总大小"是size_bytes*num_items.所有这些信息都在const数组中,在编译时可用.但请注意,_table的总大小与EEPROM本身的大小无关._table不镜像EEPROM,它只描述我们需要的布局,用法和其他"元数据"类型信息.但是,您可以使用此元数据来确定我们正在使用的EEPROM数量.

该阵列简单地描述了存储在外部EEPROM中的数据,该外部EEPROM具有固定/最大尺寸.随着功能的添加和删除,const数组中的条目会发生变化.我们目前对数据的总大小进行运行时检查,以确保它不超过EEPROM大小.

但是,我们已将许多这些运行时检查更改为static_assert样式模板检查,以便构建立即停止.我不是模板专家,所以可以在这个上使用一些帮助.

所以,问题是:如何创建一个模板来添加所有元素的大小(乘以每个元素的值,然后添加所有结果),然后执行static_assert并在构建超过幻数大小时停止构建的EEPROM.我把典型的递归因子模板示例看作一种方法,但它无法访问数组,它需要一个const值(我认为).

非常感谢你的帮助,

c++ templates static-assert

4
推荐指数
1
解决办法
580
查看次数

标签 统计

c++ ×1

static-assert ×1

templates ×1