【发布时间】:2020-03-03 13:39:28
【问题描述】:
我有以下sn-p的代码:
template <size_t N>
foo make() { ... }
...
for (...) {
auto foo = make<1>();
// lots of tests involving foo
}
我想用非类型模板参数的不同值重复后一个块到make,例如make<2>、make<3>等。
如果这是我想要迭代的类型,我可以使用 this solution,但不清楚我是否可以以相同的方式将非类型模板参数与泛型 lambda 一起使用。
我怎样才能考虑到这一点,以便我可以创建运行上面的代码块,但用不同的值来实例化 make 的非类型参数。该解决方案应仅使用块范围元素 - 如果我可以创建一些顶级 template <size_t N> struct maker { ... } 对象来包装 make,这很容易。
【问题讨论】:
-
那么,你有一个终止索引吗?您确定要从 1 而不是 0 开始吗?
-
@NicolBolas - 在这种情况下,我想从 1 开始,但如果 0 的解决方案更干净,我可以适应它。终止索引约为 10,但我也可以手动列出案例,例如
something { bar<1>, bar<2>, ... }或其他(但不复制for循环中的所有代码)。