我在一个微控制器上,所以为了避免新的操作员,我保留了一些内存用于放置新的操作员调用。我想通过向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::variant
API:
https://en.cppreference.com/w/cpp/utility/variant