c++ - 如何通过可变参数模板表达概念?
问题描述
我想定义一个概念,只有具有特定类型值的元组才能满足。
假设为简单起见,我只想接受仅包含数字类型元素的元组。我该怎么做?
例如
std::tuple<int16_t, int32_t> // satisfies concept
std::tuple<std::string, double> // doesn't satisfy concept
问题是我必须制定类似“for_each_type”的内容。也不允许使用递归概念。
解决方案
很简单:
namespace impl {
template <class T>
struct is_tuple_of_integrals
: std::false_type { };
template <std::integral... Ts>
struct is_tuple_of_integrals<std::tuple<Ts...>>
: std::true_type { };
}
template <class T>
concept tuple_of_integrals = impl::is_tuple_of_integrals<T>::value;
我确实想知道是否可以省略中间特征,但我不相信没有概念专业化。
推荐阅读
- spark-streaming - 获取 java.lang.ClassNotFoundException:使用 spark-submit 时
- java - Spring Data JPA 的 @PersistenceConstructor 注释是否与 Hibernate 结合使用?
- java - Android Spinner 如何更新选中的位置(getSelectedItemPosition())?
- java - 如何使用 Java 8 流遍历多个列表?
- symfony - 如何使用 browserkit 客户端发出多部分/数据请求?
- javascript - 组件上的 TouchableNativeFeedback 不执行 onPress 函数
- java - 无法从 flink SQL 查询中获取结果
- java - JAVA 8:等效于 Java 中 Oracle 的 LTRIM 和 TO_CHAR
- c - 我不明白大小如何等于 float 而不是 short int,因为 i 的大小是 short int
- vba - 将粘贴工作表复制到不同的工作簿(到表中)