C++11 Categorical Combinators via Template Meta-Programming.