有没有一种方法可以在模板函数中拥有可变数量的类型名,比如参数包



我在一个微控制器上,所以为了避免新的操作员,我保留了一些内存用于放置新的操作员调用。我想通过向constexpr函数提供一些类型来确定内存的最小大小,该函数将返回列表中最大的类型。

struct A
{
int foo;
int bar[24];
};
struct B
{
int foo;
int bar[126];
};

uint8_t objectMem[max_sizeof<A, B>());

有没有";参数包";字体名称?我希望能够附加任意数量的类型作为模板参数。

沿着这些线的东西:

template <typename... Ts>
constexpr size_t max_sizeof() {
return sizeof(std::aligned_union<0, Ts...>::type);
}

当然。您可以使用可变模板:

https://en.cppreference.com/w/cpp/language/parameter_pack

您所需的大小可以实现为可变模板:

https://en.cppreference.com/w/cpp/language/variable_template

最后,您可以考虑使用std::variantAPI:

https://en.cppreference.com/w/cpp/utility/variant

最新更新