Есть много мест в boost, где я вижу шаблонный класс и не могу не думать, почему человек, который написал его, использовал шаблоны.Почему так сильно замаскирован импульс?
Например, класс мьютекса. Все концепции мьютексов реализованы в виде шаблонов, где можно просто создать несколько базовых классов или абстрактных классов с интерфейсом, который соответствует концепции.
Редактировать после ответов: Я думал о стоимости виртуальных функций, но не стоит ли иногда отдавать очень мало штрафа за производительность за лучшее понимание? Я имею в виду иногда (особенно с повышением), очень сложно понять шаблонный код и дешифровать ошибки компилятора в результате неправильного использования шаблонов.
будет хорошим вопросом для этого парня: http://stackoverflow.com/users/5597/anthony-williams (автор boost.thread): p –
Основная философия сообщества C++ заключается в том, что «вы получаете только то, что вы просите ». Проект Boost пытается, как и STL, следовать этой философии, разрабатывая все библиотеки, используя шаблоны. Существует стоимость, хотя, как вы говорите: иногда страдает понимание. Если вам нужна библиотека, которую вы можете более легко понять, возможно, вам стоит взглянуть на библиотеку Qt. Он содержит многое из того, что делает Boost, и многое другое! На мой взгляд, дизайн Qt позволяет широкомасштабную разработку на C++, чего-то Boost полностью не хватает. –