| 107 | /// All bitmaps must have identical length. |
| 108 | template <size_t N, typename Visitor> |
| 109 | static void VisitBits(const Bitmap (&bitmaps)[N], Visitor&& visitor) { |
| 110 | int64_t bit_length = BitLength(bitmaps, N); |
| 111 | std::bitset<N> bits; |
| 112 | for (int64_t bit_i = 0; bit_i < bit_length; ++bit_i) { |
| 113 | for (size_t i = 0; i < N; ++i) { |
| 114 | bits[i] = bitmaps[i].GetBit(bit_i); |
| 115 | } |
| 116 | visitor(bits); |
| 117 | } |
| 118 | } |
| 119 | |
| 120 | /// \brief Visit bits from each bitmap as bitset<N> |
| 121 | /// |