c++ - 参数包中的过滤器类型
问题描述
我正在尝试创建可变参数模板/参数包的过滤类型并保留排序。
// example what im trying to accomplish
template<typename... Args>
struct query
{
using filtered = typename filtered<std::is_integral_v, Args...>
}
在此示例中,过滤将过滤所有整数类型,例如。
query<int, A, B>::filtered == query<A, B>::filtered
我怎样才能创建一个这样的工具或能达到相同结果的东西
解决方案
使用Boost.Mp11,这是一个简短的单行(一如既往):
using filtered = mp_filter<std::is_integral, mp_list<Args...>>;
请注意,如果您希望这是一个std::tuple
,那就是:
using filtered = mp_filter<std::is_integral, std::tuple<Args...>>;
推荐阅读
- ruby-on-rails - 如何在 Rails 中使用插入所有方法,包括关联?
- arrays - C从文本文件中读取数字
- java - 反转 LinkedList 的偶数子列表
- python - 从 C++ 循环调用 Python 函数数小时后运行缓慢
- android - 为 Android 应用程序实现“插件”的选项有哪些?
- javascript - 如何使用chartjs中的y轴值进行操作
- python - 使用 tf.py_function 后,在 model.fit 期间出现 Tensorflow 2.6.0 错误:ValueError: Expect x to be a non-empty array or dataset
- c# - LambdaExpression 引用私有字段
- eclipse - 为我的 Minecraft mod 添加依赖项时出错
- c# - 带有“szl”语言标记(西里西亚语)的 C# 资源文件未出现在输出目录中