Вот читаю сейчас документацию по библиотека boost.preprocessor (это набор макросов препроцессора c/c++, ориентированных на метопрограммирование, входит в библиотеку boost), раздел про списки. http://boost.org/libs/preprocessor/doc/data/lists.html И вижу характерные лисповые конструкции (вплоть до названий - nil, cons, first, rest....)
Правду видимо говорят, что лисп намного опередил своё время...
ЗЫ однако, использовать элементы функционального/мета программирования на c++ (средствами того же boost или libsigc++) довольно геморно. Постоянно натыкаешься на ошибки типа "неправильный аргумент функции", при этом сообщение компилятора об ошибке представляет из себя кашу из шаблонов и их параметров на несколько экранов, при этом совершенно непонятно, где на самом деле ошибка...