http://www.haskell.org/haskellwiki/Haskell.
All the languages mentioned up to this point are imperative (or "multi-paradigm", which is still mostly imperative). Learning how to program in a functional language, like Haskell or ML, should broaden your programming horizons and improve how you think about programming, even if you're still writing most of your code in C++.