#include <bitset>
#include <stdio.h>
template <std::size_t N> void fill(std::bitset<N> &b) {
b.set();
b[0] = b[1] = false;
for (std::size_t i = 2; i < N; ++i) {
for (std::size_t j = 2 * i; j < N; j += i)
b[j] = false;
}
}
template <std::size_t N>
void by_ref_and_ptr(std::bitset<N> &ref, std::bitset<N> *ptr) {
// Check ref and ptr
return;
}
int main() {
std::bitset<0> empty;
std::bitset<13> small;
fill(small);
std::bitset<70> medium;
fill(medium);
std::bitset<1000> large;
fill(large);
by_ref_and_ptr(small, &small); // break here
by_ref_and_ptr(medium, &medium);
by_ref_and_ptr(large, &large);
return 0;
}