如果我理论上有一个整数序列像
std::integer_sequence<int, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9>
Run Code Online (Sandbox Code Playgroud)
如何使用一些编译时谓词来过滤它以获得更小的std::integer_sequence<int, ...>?
为了论证,让我们说我只想要偶数值,这导致了"如何使下面的static_assert(或接近的东西)通过?"的问题.
static_assert(std::is_same_v<std::integer_sequence<int, 0, 2, 4, 6, 8>,
decltype(FilterEvens(std::integer_sequence<int, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9>{}))>,
"Integer sequences should be equal");
Run Code Online (Sandbox Code Playgroud)
这个问题的灵感来自于考虑我们如何完成删除两个位集之间的重复(这个问题),假设我们可以将位集表示为integer_sequences仅包含0和1.如果你也可以用这种方式解决那个问题