c++ - 折叠表达式:迭代可变参数模板类型参数以检查包含类型的编译时条件
问题描述
我的想法很简单:在可变参数类模板中,我想检查类型的一些编译时条件。在这种情况下,我想知道某个类型是否在包中。这就是代码在 C++17 的折叠表达式中的样子,但显然这不是有效的语法。如何实施?
#include <type_traits>
template <class... Types>
struct TypesPack
{
template <typename T>
static constexpr bool hasType() {
return std::is_same<T, Types>::value || ... || false;
}
};
解决方案
static constexpr bool hasType() {
return (std::is_same<T, Types>::value || ...);
}
折叠表达式必须用括号括起来,并且在用作运算符false
时可以省略。||
推荐阅读
- go - 如何优雅地处理 Web 服务中的错误
- c# - 如何获取调试文件夹的目录路径?
- asp.net - Web-API : 在 LIVE API 中测试帐户设置
- java - 根据对象层次结构将 TreeMap 转换为列表
- html - 要在 Angular 5 中以 formcontrol 表示的 Json 数据
- angular - Angular Reactive Form 为什么在输入侦听器之前调用 valueChanges
- gridfs - 使用 react-native-video 显示视频,使用 GridFSBucket 来自 express
- xcode - 如何在模拟器中从会话到会话保留 CoreData 条目?
- php - php中的多个条件
- javascript - 如何从多个模式中收集数据?- 领域