【发布时间】:2020-01-26 21:22:04
【问题描述】:
如何编写一个函数来检查你是否可以总结所有元组元素
template <size_t ID, class T>
int check(const T& p)
{
size_t n = std::tuple_size_v<T>;
auto sum = std::get<0>(p);
if constexpr (ID < std::tuple_size_v<T>) {
if (sum += std::get<ID>(p)) {
check<ID + 1>(p);
}
else
...
【问题讨论】:
-
您希望所有类型都是算术类型吗?相同的算术类型?您想像折叠表达式一样简单地在所有相邻对上调用 + 吗?
-
扩展@alterigel 的问题,您想考虑促销吗?你想强制总和与第一个元素的类型相同吗?这就是你的代码 sn-p 所暗示的?
-
您想要一个字符串元组通过您的检查吗?字符串支持
operator+,但该操作很少称为“求和”。检查的重点应该是什么:使用符号+还是使用产生通常称为“sum”的运算? (我想我一直在尝试定义“可以总结”。)
标签: c++ tuples metaprogramming