【发布时间】:2015-04-07 18:21:16
【问题描述】:
假设我有一个过滤类型列表的Filter 元函数:
template<template<typename> class TFilter, typename... Ts>
using Filter = MetaList</* check TFilter<T>{}() for every type in Ts... */>;
元函数可以这样使用:
Filter<std::is_pod, int, char, std::string, int>
// ...returns...
MetaList<int, char, int>
现在,我想获取所有不是 POD 的类型。我可以创建一个FilterNot 元函数,但实际上我也需要其他元函数中的“否定”。
是否可以为任何类似 type-trait 的模板类创建否定包装器?
所需代码:
Filter<Negate<std::is_pod>, int, char, std::string, int>
// ...returns...
MetaList<std::string>
【问题讨论】:
标签: c++ templates metaprogramming template-meta-programming typetraits