gpt4 book ai didi

c++ - 初始化列表中的模板大小数组初始化,C++

转载 作者:行者123 更新时间:2023-11-30 01:42:07 28 4
gpt4 key购买 nike

class Y; //not really relevant

class B
{
B(Y*);
//stuff
}

template<int SIZE> class X : public Y
{
B array[SIZE];

X();
}

我想用 this 作为参数调用 array[] 的每个元素的构造函数。我怎样才能以漂亮的方式做到这一点? C++14 甚至 17 对我来说都可以。

最佳答案

几种方法之一:

template <int SIZE>
class X : public Y
{
B array[SIZE];

template <std::size_t>
X* that() { return this; } // don't abuse the comma operator

template <std::size_t... Is>
X(std::index_sequence<Is...>) : array{ that<Is>()... } {}

public:
X() : X(std::make_index_sequence<SIZE>{}) {}
};

DEMO

关于c++ - 初始化列表中的模板大小数组初始化,C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40082125/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com