Первый тин IMO - это умные указатели . Интеграция в новый код проста и, как правило, не является проблемой для существующего кода. Они облегчают управление памятью и работают для многих других ресурсов.
C ++ дает вам возможность управлять своей собственной памятью, умные указатели позволяют вам (в основном) использовать ее, когда вам это не нужно.
Во-вторых, как вы упомянули, функциональные объекты закрывают большой пробел в C ++, который традиционно решается с помощью наследования, которое во многих случаях является сильной связью.
У меня мало опыта в повышении за пределами этих двух, но большая часть остального довольно "ситуативна" - вам это может и не понадобиться. Получите обзор библиотек и посмотрите, что вам нужно.
boost::any
и boost::variant
хорошо, что вам нужен вариант типа данных с двумя разными подходами.
boost::regex
если вам нужен какой-то текстовый анализ.
boost::thread
и boost::filesystem
помогут вам написать переносимый код. Если у вас уже есть хорошие библиотеки, специфичные для платформы, они могут вам не понадобиться, но в любом случае они лучше уровня API или C ++.
Может быть, вам нравится мое введение в повышение интеллектуальных указателей и довольно неортодоксальное использование для них.