У Александреску были очень интересные идеи (списки типов, шаблоны классов на основе политик и т. Д.), Но многие из них были улучшены, а также протестированы в более широком диапазоне компиляторов на переносимость и корректность.
Я бы рекомендовал, когда это возможно, предпочесть повышение, просто по этим причинам. Тем не менее, современный дизайн C ++ по-прежнему дает представление о гибкости C ++ и позволяет взглянуть на мысли одного человека (очень хороший) для решения многих общих проблем программирования.
Например, умные указатели на основе политик - очень хорошая идея, но мы можем выяснить, почему авторы наддува решили не реализовывать shared_ptr и scoped_ptr таким образом:
A. Параметризация обескураживает пользователей.
Шаблон shared_ptr тщательно
созданный для удовлетворения общих потребностей без
обширная параметризация. Когда-нибудь
настраиваемый интеллектуальный указатель может
быть изобретенным, что также очень легко
использовать и очень трудно злоупотреблять. До тех пор
тогда shared_ptr - это умный указатель
выбор для широкого спектра
Приложения. (Те, кто заинтересованы в
умные указатели на основе политики должны
прочитайте Современный C ++ Дизайн Андрея
Alexandrescu.)
Если вам действительно нужно большое количество интеллектуальных указателей, и вам и вашей команде удобно работать с параметризацией шаблонов, тогда подход на основе политик для реализации интеллектуальных указателей может работать для вас. Тем не менее, scoped_ptr и shared_ptr (наряду с weak_ptr), как правило, делают работу довольно тщательно. Комбинаторное поведение классов политики, вероятно, лучше использовать для чего-то, для чего существует широкий спектр полезных комбинаций.
Тем не менее, есть еще несколько интересных предложений от Александреску, которые Буст не рассмотрел. MOJO , например, по-прежнему действительно полезно, пока компиляторы не выполнят лучшую работу по реализации конструкторов перемещения или пока мы не сможем использовать ссылки на rvalue из C ++ 0x. У него также есть несколько очень интересных мыслей по реализации распределителей памяти.
Что касается вопроса, мы используем части Loki, необходимые для mojo, в нашем коммерческом проекте, но в большинстве случаев улучшаемся, когда это уместно.