【发布时间】:2019-08-23 06:13:29
【问题描述】:
可以如下使用模板参数包:
template <int T1, int... Ts>
struct Test {
static constexpr int sizes[] = {Ts...};
};
template <int T1, int... Ts>
constexpr int Test<T1, Ts...>::sizes[];
但是,由于详细here,模板参数包必须是最后一个模板参数。因此,我们不能有这样的代码:
template <int T1, int... Ts, int Tn>
struct Test {
static constexpr int sizes[] = {Ts...};
Foo<Ts...> foo;
};
template <int T1, int... Ts, int Tn>
constexpr int Test<T1, Ts..., Tn>::sizes[];
在许多情况下,我们需要访问一组模板参数的最后一个元素。我的问题是,实现上述代码的最佳实践是什么?
编辑:
这不是this question 的重复。我试图获取除最后一个参数(不是最后一个参数本身)之外的所有内容,因为我需要如下定义Foo:
Foo<Ts...> foo;
【问题讨论】:
-
这里的“高效”到底是什么意思?最少的代码?编译速度最快?还有什么?
-
@MichaelKenzel。代码量无关紧要。我非常希望它可以在编译时计算。