创建具有扩展索引序列的结构

灯泡

我希望能够在构造函数的初始化程序列表中使用参数包扩展。为实现这一目标的最佳方法是为我的班级添加参数包模板参数?这是我的意思的示例:https : //coliru.stacked-crooked.com/a/e699c4cd035e0b1c

#include <utility>
#include <iostream>

template<typename T, std::size_t...Is>
struct base_vec
{
    constexpr static std::size_t N = sizeof...(Is);
    T e[N];
    base_vec() : e{} {}
    explicit base_vec(const T& s) : e{((void)Is,s)...} {}
};


template<typename T, std::size_t...Is>
std::ostream& operator<<(std::ostream& lhs, const base_vec<T,Is...>& rhs)
{
    return (std::cout << ... << rhs.e[Is]);
}



template<typename T, std::size_t...Is>
constexpr auto getVecIs(std::index_sequence<Is...> seq)
{
    return base_vec<T, Is...>{};
}




template<typename T, std::size_t N>
using vec = decltype(getVecIs<T>(std::declval<std::make_index_sequence<N>>()));

int main()
{
    vec<int,3> v(2);
    std::cout << v << "\n";
    return 0;
}

注意微不足道的扩展e{((void)Is,s)...}这是一种好的做法,还是我错过了这种方法的一些缺点(除了现在我的结构将具有整个参数包(而不是单个size_t N的事实)?

贾罗德42

您可以将扩展完全移到类中:

template<typename T, std::size_t N>
struct vec
{
public:
    T e[N];
    vec() : e{} {}
    explicit vec(const T& s) : vec{s, std::make_index_sequence<N>{}} {}
private:
    template <std::size_t ... Is>
    vec(const T& s, std::index_sequence<Is...>) : e{(Is, s)...} {}
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从具有顺序列标题的数据帧中创建列表数据结构

来自分类Dev

创建具有重复项的时间序列

来自分类Dev

创建具有重复索引的排名列

来自分类Dev

创建具有重复索引的排名列

来自分类Dev

创建具有多个字段的索引

来自分类Dev

创建具有指定索引的对象

来自分类Dev

如何创建具有不同索引的json?

来自分类Dev

具有多个实例/扩展的ArrayList序列化

来自分类Dev

具有C扩展的Python项目-结构,导入和测试

来自分类Dev

具有相关扩展类的Cython项目结构

来自分类Dev

具有服务结构集群自动扩展功能的VMSS

来自分类Dev

R:具有重复时间索引条目的时间序列

来自分类Dev

合并具有层次结构索引的数据框?

来自分类Dev

数据结构以处理具有变化索引的数组

来自分类Dev

创建具有两列的索引和创建具有两列的单独索引之间的区别

来自分类Dev

创建具有两列的索引和创建具有两列的单独索引之间的区别

来自分类Dev

使用带有索引的结构来创建向量

来自分类Dev

RestAssured:确定如何序列化内容类型application / x-www-form-urlencoded。如何创建具有键/值结构的请求?

来自分类Dev

创建具有任意开始日期的每月时间序列

来自分类Dev

熊猫:创建具有不同频率的熊猫日期时间序列

来自分类Dev

Python:为 ConvNet 创建具有多个通道的时间序列

来自分类Dev

从具有父子引用的数组创建树结构

来自分类Dev

如何从具有复杂结构的列表创建DataFrame?

来自分类Dev

如何创建具有以下结构的HTML表?

来自分类Dev

创建具有类别树结构的简单数组

来自分类Dev

创建与参考目录具有相同目录结构的空文件

来自分类Dev

如何创建仅具有结构作为选择表的表

来自分类Dev

如何创建自己的具有扩展功能的exec函数?

来自分类Dev

无需在具有UNIQUE约束的列上创建索引,对吗?

Related 相关文章

  1. 1

    从具有顺序列标题的数据帧中创建列表数据结构

  2. 2

    创建具有重复项的时间序列

  3. 3

    创建具有重复索引的排名列

  4. 4

    创建具有重复索引的排名列

  5. 5

    创建具有多个字段的索引

  6. 6

    创建具有指定索引的对象

  7. 7

    如何创建具有不同索引的json?

  8. 8

    具有多个实例/扩展的ArrayList序列化

  9. 9

    具有C扩展的Python项目-结构,导入和测试

  10. 10

    具有相关扩展类的Cython项目结构

  11. 11

    具有服务结构集群自动扩展功能的VMSS

  12. 12

    R:具有重复时间索引条目的时间序列

  13. 13

    合并具有层次结构索引的数据框?

  14. 14

    数据结构以处理具有变化索引的数组

  15. 15

    创建具有两列的索引和创建具有两列的单独索引之间的区别

  16. 16

    创建具有两列的索引和创建具有两列的单独索引之间的区别

  17. 17

    使用带有索引的结构来创建向量

  18. 18

    RestAssured:确定如何序列化内容类型application / x-www-form-urlencoded。如何创建具有键/值结构的请求?

  19. 19

    创建具有任意开始日期的每月时间序列

  20. 20

    熊猫:创建具有不同频率的熊猫日期时间序列

  21. 21

    Python:为 ConvNet 创建具有多个通道的时间序列

  22. 22

    从具有父子引用的数组创建树结构

  23. 23

    如何从具有复杂结构的列表创建DataFrame?

  24. 24

    如何创建具有以下结构的HTML表?

  25. 25

    创建具有类别树结构的简单数组

  26. 26

    创建与参考目录具有相同目录结构的空文件

  27. 27

    如何创建仅具有结构作为选择表的表

  28. 28

    如何创建自己的具有扩展功能的exec函数?

  29. 29

    无需在具有UNIQUE约束的列上创建索引,对吗?

热门标签

归档