Well of course things like LISP and Prolog have that kind of stuff, but I wasn't considering those languages simply because, most people don't use them for general purpose programming. The only time I've ever encountered LISP and Prolog was when doing AI coding. Along the same lines, FORTRAN has things that could be used in such a way as well, but again FORTRAN is more for scientific programming, not general usage. Ada, well I forgot Ada, you are indeed correct about that.

One thing about C++ templates, from talking to people, the ISO C++ committee is working on fixing some of the ugliness, the super fun std::list<std::pair<int,char> > (space required if using multiple levels of templates) is scheduled to be fixed, and I'm sure other things will evolve as well. C++ is an ever expanding and rapidly evolving language. I'm sure as time goes on the syntax will be a little less cumbersome and easier to understand.