如何转换int参数包
How to transform int parameter pack
给定一个模板
template <int... Ints>
struct FixedArray;
如何实现将每个整数值乘以给定数字的元函数?
template <int A, typename F>
struct Mul;
Mul<2, FixedArray<5, 7, 8>>::type
与
相同
FixedArray<10, 14, 16>
为此,您可以先定义一个空的Mul
class:
template<int A, typename T>
struct Mul;
然后为 FixedArray
创建专业:
template<int A, int ... Ints>
struct Mul<A, FixedArray<Ints...>>
{
using type = FixedArray<(Ints * A)...>;
};
但是,我宁愿在 FixedArray
中有一个 typedef,所以生成的语法对我来说看起来更自然:
template <int ... Ints>
struct FixedArray
{
template<int A>
using Mul = FixedArray<(Ints * A)...>;
};
static_assert(std::same_as<FixedArray<1,2,3>::Mul<2>, FixedArray<2,4,6>>);
给定一个模板
template <int... Ints>
struct FixedArray;
如何实现将每个整数值乘以给定数字的元函数?
template <int A, typename F>
struct Mul;
Mul<2, FixedArray<5, 7, 8>>::type
与
相同FixedArray<10, 14, 16>
为此,您可以先定义一个空的Mul
class:
template<int A, typename T>
struct Mul;
然后为 FixedArray
创建专业:
template<int A, int ... Ints>
struct Mul<A, FixedArray<Ints...>>
{
using type = FixedArray<(Ints * A)...>;
};
但是,我宁愿在 FixedArray
中有一个 typedef,所以生成的语法对我来说看起来更自然:
template <int ... Ints>
struct FixedArray
{
template<int A>
using Mul = FixedArray<(Ints * A)...>;
};
static_assert(std::same_as<FixedArray<1,2,3>::Mul<2>, FixedArray<2,4,6>>);