Ну, последние разработки (TR1, C ++ 0x) в C ++ сделали его очень общим, позволяя вам выполнять императивное, ООП или даже (ограниченное) функциональное программирование на C ++. Такие библиотеки, как Boost, также позволяют вам выполнять мощное декларативное метапрограммирование на основе шаблонов.
Я думаю, что Boost - это первое, что нужно попробовать в C ++. Это всеобъемлющая библиотека, которая также включает в себя несколько модулей, которые позволяют программировать в функциональном стиле (Boost.Functional) или выполнять декларативное метапрограммирование во время компиляции (Boost MPL).