Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

Obtaining the same types and reducing symbol length

Boost , The Boost C++ Libraries BoostBook Documentation Subset , Chapter 17. Boost.Intrusive

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

Гибкий механизм спецификации опционов, используемый Boost.Intrusive для крючков и контейнеров, имеет несколько недостатков:

  • Если пользователь задает одни и те же опции в разном порядке или задает некоторые опции и оставляет остальные в качестве по умолчанию, тип создаваемого контейнера / крюка будет другим. Иногда это раздражает, потому что два программиста, указывающие одни и те же варианты, могут оказаться несовместимыми типами. Например, следующие два списка, хотя и используют одни и те же варианты, не имеют одного типа:
#include <boost/intrusive/list.hpp>
using namespace boost::intrusive;
//Explicitly specify constant-time size and size type
typedef list<T, constant_time_size<true>, size_type<std::size_t> List1;
//Implicitly specify constant-time size and size type
typedef list<T> List2;
  • Указание параметров приводит к длинным символам шаблонов для классов и функций. Спецификаторы опционов сами являются глаголами и без вариадических шаблонов, для неопределенных опций присваиваются несколько параметров шаблонов по умолчанию. Объект и отладка информационных файлов могут расти, и время компиляции может пострадать, если будут выпущены длинные имена.

Для решения этих вопросов Boost.Intrusive предлагает некоторые метафункции помощника, которые уменьшают длину символов и создают один и тот же тип, если используются одни и те же варианты (или явно или косвенно). Это также улучшает время компиляции. Все контейнеры и крючки имеют свои соответствующие версии make_xxx. Ранее показанный пример можно переписать так, чтобы получить тот же тип списка:

#include <boost/intrusive/list.hpp>
 using namespace boost::intrusive;
 #include <boost/intrusive/list.hpp>
 using namespace boost::intrusive;
 //Explicitly specify constant-time size and size type
 typedef make_list<T, constant_time_size<true>, size_type<std::size_t>::type List1;
 //Implicitly specify constant-time size and size type
 typedef make_list<T>::type List2;

Продюсированные длины символов и время компиляции, как правило, будет короче, а файлы объектов/отладок меньше. Если вы обеспокоены размерами файлов и временем компиляции, этот вариант является вашим лучшим выбором.


PrevUpHomeNext

Статья Obtaining the same types and reducing symbol length раздела The Boost C++ Libraries BoostBook Documentation Subset Chapter 17. Boost.Intrusive может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Chapter 17. Boost.Intrusive ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-04 23:10:10/0.0060579776763916/0