我已经定义了一个基类模板:
template<class actual_class>
class base
{
public:
static const int value;
}
value
的定义取决于actual_class
tparam。
接下来,我有一堆从base
派生的类,我们将它们称为a
和b
。我们也说a::value = 5
和b::value = 10
。
现在,在方法模板中,我需要从参数包访问静态值。我想把它们放在向量中。
template<class... derived_from_bases>
void foo(irrelevant_class<derived_from_bases...> irrelevant)
{
// std::vector<int> values = { ... }
...
}
对于用 tparams调用的函数,我希望值向量看起来像这样:
std::vector<int> values = {5 /* a::value */, 10 /* b::value */};
还有一个std :: array而不是std :: vector会很不错。
谢谢您的帮助。
答案 0 :(得分:0)
对于矢量,您只需要
std::vector<int> values = { derived_from_bases::value... };
如果您使用的是C ++ 17,则可以通过与{p>
std::array
和CTAD将为您推断出数组的类型和大小。如果您没有C ++ 17,则可以使用
std::array values = { derived_from_bases::value... };