Rap*_*tor 9 c++ type-traits variadic-templates c++11
我目前有一个可变参数函数,它接受任意类型的任意数量的参数(duh),但是,我想将类型限制为仅仅是POD的类型,并且也与void*的大小相同或者更小.
void*检查很容易,我刚刚这样做了:
static_assert(sizeof...(Args) <= sizeof(PVOID), "Size of types must be <= memsize.");
Run Code Online (Sandbox Code Playgroud)
但是我无法弄清楚如何为std :: is_pod做同样的事情.
这可能吗?
Pet*_*der 12
您可以编写元函数来确定是否所有都是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;
};
Run Code Online (Sandbox Code Playgroud)
然后
static_assert( all_pod<Args...>::value, "All types must be POD" );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1346 次 |
| 最近记录: |