I agree with you about Lisp. I like Lisp; it's definitely more elegant than C++.
That said, C++ was designed to be resource efficient, at a time when the best Lisp interpreters were...well...less so. So, while C++ and Lisp both have OO, functional, procedural and metaprogramming techniques (among others), C++ has made some ugly choices to achieve efficiency at the same time.
For the record: I am not trying to get into a Lisp/C++ debate.
That said, C++ was designed to be resource efficient, at a time when the best Lisp interpreters were...well...less so. So, while C++ and Lisp both have OO, functional, procedural and metaprogramming techniques (among others), C++ has made some ugly choices to achieve efficiency at the same time.
For the record: I am not trying to get into a Lisp/C++ debate.