“Use template meta-programming to express design, not to express computation.”
Various explanations of template meta-programming uses examples like a compile-time Fibonnacci sequence. What those tutorials should be focusing on is how to use template meta-programming to hide incidental requirements of interfaces.
The ultimate goal of template meta-programming is to enable code like this:
int main() { do_what_i_expect(/* args */); return 0; }