gpt4 book ai didi

c++ - 可变参数模板和类型特征

转载 作者:可可西里 更新时间:2023-11-01 16:35:56 26 4
gpt4 key购买 nike

我目前有一个可变参数函数,它接受任意数量的任意类型的参数(duh),但是,我想将类型限制为仅 POD 的类型,并且与 void 的大小相同或更小*.

void* 检查很简单,我只是这样做了:

static_assert(sizeof...(Args) <= sizeof(PVOID), "Size of types must be <= memsize.");

但是我不知道如何为 std::is_pod 做同样的事情。

这可能吗?

最佳答案

您可以编写一个元函数来确定是否所有类型都是 POD 类型:

template <typename... Ts>
struct all_pod;

template <typename Head, typename... Tail>
struct all_pod<Head, Tail...>
{
static const bool value = std::is_pod<Head>::value && all_pod<Tail...>::value;
};

template <typename T>
struct all_pod<T>
{
static const bool value = std::is_pod<T>::value;
};

然后

static_assert( all_pod<Args...>::value, "All types must be POD" );

关于c++ - 可变参数模板和类型特征,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6243664/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com