Calculating meta xor sequences in C++.
#include <cstdio>
#include <cstdlib>
template<unsigned long n>
struct XorSeq
{
enum
{
value = n ^ XorSeq<n - 1>::value
};
void print() const {
std::printf("%lu -> %lu\n", n, value);
}
};
// base condition
template <>
struct XorSeq<0> {
enum
{
value = 1
};
};
int main(int argc, char const* argv[]) {
XorSeq<2>().print();
XorSeq<3>().print();
XorSeq<4>().print();
XorSeq<5>().print();
XorSeq<6>().print();
XorSeq<7>().print();
XorSeq<9>().print();
XorSeq<10>().print();
XorSeq<11>().print();
XorSeq<12>().print();
XorSeq<13>().print();
XorSeq<14>().print();
XorSeq<15>().print();
XorSeq<16>().print();
XorSeq<31>().print();
return 0;
}