gpt4 book ai didi

c++ - 模板参数的乘法

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:56:34 26 4
gpt4 key购买 nike

我有以下问题:

template< size_t... N_i >
class A
{
// ...
std::array< float, /* product of the unpacked elements of N_i */ > arr;
};

正如您在上面看到的,我尝试声明一个 std::array名为 arr作为类(class)的一员A .在这里,我要 arr具有 N_i 的解压缩元素的大小 乘积,例如,在 A<2,3,4> 的情况下, "arr"的大小应为 2*3*4=24 .
有谁知道如何实现?

最佳答案

在 C++17 中:

std::array < float, (... * N_i)> arr;

在 C++14 中:

// outside the class
template<size_t... Ns>
constexpr size_t product(){
size_t p = 1;
for(auto n : { Ns... }) p *= n;
return p;
}

// then
std::array< float, product<N_i...>()> arr;

在 C++11 中:

template<size_t... N_i>
struct product {
static const size_t value = 1;
};

template<size_t N_1, size_t... N_i>
struct product<N_1, N_i...> {
static const size_t value = N_1 * product<N_i...>::value;
};

std::array< float, product<N_i...>::value> arr;

或者,您可以使用递归 constexpr 函数。

关于c++ - 模板参数的乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40008816/

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