Библиотека Loki - средства обобщенного программирования

Автор

Андрей Александреску, написавший замечательную книгу "Современное проектирование на С++: Обобщенное программирование и прикладные шаблоны проектирования".

О названиии

Локи - это бог хитрости и озорства в норвежской мифологии. Автор (А. Александреску) надеется, что оригинальность и гибкость библиотеки Loki будут напоминать читателям книги озорного норвежского бога. Насчет оригинальности этой замечательной библиотеки - полностью подтверждаем, и рекомендуем окунуться в мир обобщенного программирования C++.

Где ее скачать и как использовать

http://sourceforge.net/projects/loki-lib/

ZIP-архив небольшой (менее 300 Kb), после скачивания распаковываете - и можно использовать! Мы предлагаем распаковать библиотеку так, чтобы получилась примерно такая структура каталогов:

Возможны и другие варианты, но главное - чтобы в программе включение хидера из библиотеки Loki выглядело так:

#include <loki/static_check.h>

Это сразу визуально дает информацию программисту о том, что данный хидер взят из Loki, а не, допустим, из Boost. Заметим, что наши рекомендации по распаковке библиотеки Boost при использовании исходных текстов поискового движка Faind аналогичны - см. описание.

Надо еще отметить, что все объявления библиотеки Loki собраны в пространстве имен Loki, поэтому во всех примерах строка using namespace Loki; подразумевается.

Loki - что это за библиотека

 

Классика C++: освоив эту книгу (с очень интересными примерами использования шаблонов) Вы буду чувствовать себя намного уверенее с языком C++ 

Современное проектирование на С++: Обобщенное программирование и прикладные шаблоны проектирования: подробнее

Андрей Александреску
Современное проектирование на С++: Обобщенное программирование и прикладные шаблоны проектирования

Вообще говоря, использовать средства обобщенного программирования в C++ более чем на 5% могут немногие программисты, а большинство довольствуется строчками кода типа std::vector<int>. И это при том, что шаблоны в языке C++ это не просто расширенный аналог макросов препроцессора (как полагают, кстати, многие), а удивительно мощный инструмент для реализации красивейших парадигм, включая метаалгоритмы, то есть код, который интерпретируется компилятором на стадии трансляции программы и порождает C++-код, освобождая программиста от множества рутинных операций или сложно обнаруживаемых ошибок.

Одна из глав книги и часть библиотеки Liki наверняка заставят Вас взглянуть на C++ совершенно другими глазами - операции со списками типов (typelists). Стандартный C++, без расширений .Net с его Reflection, позволяет манипулировать списками типов, в частности - добавлять в список, удалять элемент из списка, извлекать элемент по индексу, вычислять длину списка - во время компиляции программы! Эта удивительная смесь метаалгоритмов, основанных на совершенно стандартных средствах C++, доступна Вам с примерами.

 

 

Состав инструментов в библиотеке Loki

1. Проверки условий на стадии компиляции (compile time assertions) - аналог стандартного C-макроса assert(), но в отличие от последнего проверка производится при компиляции программы, а не во время ее исполнения. Читать статью

2. Отображение целочисленных констант на типы (mapping integral constants to types) - шаблон Int2Type. Читать статью

3. Списки типов (typelists). Читать статью

4. Мультиметоды (multimethods). Что это такое - глоссарий? Читать статью

последняя правка: 21.06.2005

  © Mental Computing 2010