Good advice on learning functional language, learning OCaml helped me a lot to advance my template meta-programming skills.
I could see how mixing templates with other C++ paradigms could quickly get messy in the wrong hands, since it's very powerful.