Fun with template metaprogramming.