小编Eya*_*chi的帖子

数组大小模板推导

我有一个存储std::array.

数组的大小是在编译时评估的,这是因为应用程序在嵌入式设备上运行,因此没有动态分配:(。代码如下所示:

template<uint8_t size>
class A
{
    //some constructor
    A(...);
    std::array<int, size> what;
}
//Wanted use cases
A instance1({1,2,3});
//Unwanted use case
A<3> instance2({1,2,3});
Run Code Online (Sandbox Code Playgroud)

我不知道如何构造我想要的构造函数。一周以来我已经尝试了数十种设计,但没有一个达到我想要的效果。以下是我尝试过的事物的名称:

  1. 模板推导指南 - 也是模板版本,我不确定它们是否合法......
  2. std::initializer_list- 列表的大小不能放入模板参数中。至少在非 constexpr 上下文中不是这样。
  3. std::array
  4. 普通旧数组
  5. using关键字 - 也是模板化的。

塔尔;博士:

如何从构造函数签名中的给定数组推导出表示数组类型大小的模板参数值?

c++ arrays templates template-argument-deduction ctad

2
推荐指数
1
解决办法
1406
查看次数