Подтвердить что ты не робот

С++: Используете ли вы Loki или Boost для функторов?

Я читал книгу Александреску, современный дизайн на C++, и меня очень впечатлили методы, которые он использовал, поэтому я хотел добавить Loki библиотеки в мое приложение.

Однако после дальнейшего исследования я увидел, что повышение, которое я уже использую, обеспечивает много аналогичной функциональности (не все, хотя я не мог найти синглтон в boost, например)

В основном меня интересовало использование loki из-за разработки на основе политики и функторов.

Для меня обоих, boost и loki имеют плюсы и минусы. Основная проблема, с которой я столкнулся с loki, - это плохая документация (библиотека больше не привязана к книге), но мне кажется, что loki является более мощным и гибким, чем усиление в некоторых областях (возможно, я ошибаюсь)/p >

Прежде чем выбрать использование boost или loki для функторов и политик, я хотел бы узнать мнение людей, которые используют их в реальной жизни.

Иногда вещи выглядят очень хорошо на бумаге, но имеют некоторые недостатки, когда вы используете их для реального:)

4b9b3361

Ответ 1

Я использую Boost в моей среде С++, как расширение стандартной библиотеки (с VC9 и VC10).

Я не использую его во всех проектах.

Я использую его в личных проектах (в основном в играх), где я полностью контролирую, каковы зависимости.

Я использую boost:: function в большом игровом проекте (с несколькими другими библиотеками от boost).

Локи тоже хорош, но я не чувствовал нужды. Я думаю, что единственная часть библиотеки, которую я собираюсь использовать, - это Синглтон, но я использую обычную, которая на данный момент достаточно хороша.

Ответ 2

У Alexandrescu были очень интересные идеи (списки типов, шаблоны классов на основе политик и т.д.), но многие из них были улучшены при повышении, а также были протестированы в более широком диапазоне компиляторов для мобильности и правильности.

Я бы порекомендовал предпочитать подкрепление по возможности только по этим причинам. Тем не менее, Modern С++ Design по-прежнему обеспечивает много понимания гибкости С++ и взгляда на ум одного человека (очень хороший), чтобы подходить к множеству общих проблем программирования.

Например, интеллектуальные указатели на основе политик являются очень опрятной идеей, но мы можем найти, почему авторы boost предпочли не реализовывать shared_ptr и scoped_ptr следующим образом:

а. Параметризация препятствует пользователям. Шаблон shared_ptr тщательно созданный для удовлетворения общих потребностей без обширная параметризация. Когда-нибудь высоко настраиваемый интеллектуальный указатель может быть изобретенным, что также очень легко использовать и очень трудно использовать. До то shared_ptr - это умный указатель выбора для широкого спектра Приложения. (Те, кто интересуется основанные на политике умные указатели должны читать Современный дизайн С++ от Andrei Alexandrescu.)

Если вам нужно большое количество интеллектуальных указателей, и вы и ваша команда удобны в работе с параметризацией шаблона, тогда для вас может работать политический подход к внедрению интеллектуальных указателей. Однако scoped_ptr и shared_ptr (вместе со слабым_ptr) имеют тенденцию делать работу достаточно тщательно. Комбинаторное поведение классов политики, вероятно, лучше используется для чего-то, для которого существует множество разнообразных полезных комбинаций.

Тем не менее, есть еще интересные предложения Александреску о том, что повышение не затронуло. MOJO, по-прежнему, действительно полезен, пока компиляторы не выполняют лучшую работу по внедрению конструкторов перемещения или пока мы не сможем использовать ссылки rvalue из С++ 0x. У него также есть очень интересные мысли о реализации распределителей памяти.

Что касается вопроса, мы используем части Loki, необходимые для mojo в нашем коммерческом проекте, но в основном повышаем, когда это уместно.

Ответ 3

Одна вещь, которую, возможно, следует учесть, заключается в том, что ускоряющие библиотеки должны проходить процесс экспертной оценки во время принятия. После этого, конечно же, я считаю, что на самом деле очень мало контроля над тем, какие изменения происходят, но по крайней мере там какой-то обзор, прежде чем они будут приняты. Локи - это всего лишь одно видение. Конечно, Александреску неплохо, но все же... все его идеи, и нет никаких дальнейших обзоров.

Ответ 4

С++ 0x - это то, что я использую для быстрых объектов функции.