CyberForum.ru - Форум программистов и сисадминов
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум программистов > Форум C++

Ответ Создать новую тему
 
Старый 10.12.2011, 14:08   #1
volovzi
Форумчанин
 
Регистрация: 14.03.2010
Адрес: Москва
Сообщений: 484
Репутация: 239 (139)
По умолчанию Библиотека метапрограммирования

Увлекшись метапрограммированием, начатым в предыдущей теме, я решил написать небольшую библиотеку метафункций.

Изначально всё это предназначалось для работы с кортежами, но на самом деле оно применимо к любым шаблонным классам. В том числе возможна совместная работа с библиотекой "Boost.MPL" (но очень осторожная, т.к. в "Бусте" не используются списки типов переменной длины).

Отличие от аналогов, в том числе того же "Boost.MPL" состоит, в основном, в том, что результат всех метафункций предсказуем (в "Бусте" он неопределён). Второе отличие — отсутствие теоретических ограничений на количество типов в шаблонах.

Есть и новшества: я ввёл новый результат метафункции — шаблон, он же "pattern" (т.к. "template" уже является ключевым словом). Смысл его следует из названия: это не тип ("type") и не значение ("value"), а шаблон класса, который может быть в дальнейшем конкретизирован новыми типами (см. метафункцию "get_pattern").

Это первый вариант библиотеки, не влючающий итераторы. Они появятся в следующей версии.
Прошу ознакомиться, кому не лень, и с нетерпением жду отзывов и предложений.

Исходники, так же доступны и на GitHub: https://github.com/izvolov/Meta
клонировать так: git clone git://github.com/izvolov/Meta.git
Вложения
Тип файла: zip meta.zip (46.7 Кб, 36 просмотров)

Последний раз редактировалось niXman; 24.12.2011 в 07:58. Причина: добавил ссылку на GitHub
volovzi вне форума
Другие темы раздела
C++ boost::asio cессии
Здравствуйте. Хотелось бы узнать ответ на вопрос, который не где не нашол. Сервер реализован на Boost:asio, к нему подключаются клиенты, естественно происходит создание сесии на каждого клиента после подключения и начинается прослушка данных от клиента через async_read_some. И вот вопрос, если.... boost::asio cессии
long > short ? C++
Правда ли что long строго больше чем short ? Или существуют платформы и/или реализации, где long = short?. long > short ?
Старый 03.01.2012, 14:05   #41
niXman
Форумчанин
Эксперт C++
 
Аватар для niXman
 
Регистрация: 09.08.2009
Сообщений: 3,043
Репутация: 2079 (1108)
По умолчанию Re: Библиотека метапрограммирования

volovzi, сорри. запраздновался.
завтра возвращаюсь в работу. проверю - отпишусь.
niXman вне форума
Старый 03.01.2012, 18:10  [ТС]   #42
volovzi
Форумчанин
 
Регистрация: 14.03.2010
Адрес: Москва
Сообщений: 484
Репутация: 239 (139)
По умолчанию Re: Библиотека метапрограммирования

niXman, я так и понял .

Я тут пока привёл нововведения в приличный вид и залил в репозиторий. Сами деревья лежат в meta/types/(multi-)map.
volovzi вне форума
Старый 10.01.2012, 21:20  [ТС]   #43
volovzi
Форумчанин
 
Регистрация: 14.03.2010
Адрес: Москва
Сообщений: 484
Репутация: 239 (139)
По умолчанию Re: Библиотека метапрограммирования

Провёл небольшой косметический ремонт того, что уже есть на данный момент.
Из-за того, что я всё-таки решил пойти по пути универсальности деревьев (теперь ключ — тоже тип, но обязательно какой-нибудь числовой), в ближайших планах — реализация арифметических операций со всякими метатипами (целыми, рациональными числами и т.д.).
volovzi вне форума
Старый 10.02.2012, 17:50   #44
niXman
Форумчанин
Эксперт C++
 
Аватар для niXman
 
Регистрация: 09.08.2009
Сообщений: 3,043
Репутация: 2079 (1108)
По умолчанию Re: Библиотека метапрограммирования

volovzi, привет.
убери меня из member`ов. вроде разобрался с gitю хочу попробовать сделать комит не будучи member`ом.
niXman вне форума
Старый 10.02.2012, 23:15  [ТС]   #45
volovzi
Форумчанин
 
Регистрация: 14.03.2010
Адрес: Москва
Сообщений: 484
Репутация: 239 (139)
По умолчанию Re: Библиотека метапрограммирования

niXman, сделано.
volovzi вне форума
Старый 10.02.2012, 23:39   #46
niXman
Форумчанин
Эксперт C++
 
Аватар для niXman
 
Регистрация: 09.08.2009
Сообщений: 3,043
Репутация: 2079 (1108)
По умолчанию Re: Библиотека метапрограммирования

о!
https://github.com/izvolov/Meta/pulls

прими его. я в него добавил два файла.
niXman вне форума
Старый 10.02.2012, 23:51  [ТС]   #47
volovzi
Форумчанин
 
Регистрация: 14.03.2010
Адрес: Москва
Сообщений: 484
Репутация: 239 (139)
По умолчанию Re: Библиотека метапрограммирования

Ура, работает.
volovzi вне форума
Старый 10.02.2012, 23:56   #48
niXman
Форумчанин
Эксперт C++
 
Аватар для niXman
 
Регистрация: 09.08.2009
Сообщений: 3,043
Репутация: 2079 (1108)
По умолчанию Re: Библиотека метапрограммирования

хе-хе
все, проще некуда.

я постепенно буду тесты пописывать. по возможности.

у тебя есть еще планы по доработке/развитию либы?
niXman вне форума
Старый 11.02.2012, 00:03  [ТС]   #49
volovzi
Форумчанин
 
Регистрация: 14.03.2010
Адрес: Москва
Сообщений: 484
Репутация: 239 (139)
По умолчанию Re: Библиотека метапрограммирования

niXman, отлично. Я тогда посмотрю на твои тесты и буду параллельно писать по аналогии. Можно будет распределить метафункции, чтоб одно и то же не делать.
Ближайшие планы пока те же: арифметика со всякими метатипами. А есть какие-нибудь предложения?
volovzi вне форума
После регистрации реклама в сообщениях будет скрыта
Старый 11.02.2012, 00:12   #50
niXman
Форумчанин
Эксперт C++
 
Аватар для niXman
 
Регистрация: 09.08.2009
Сообщений: 3,043
Репутация: 2079 (1108)
По умолчанию Re: Библиотека метапрограммирования

Цитата Сообщение от volovzi Посмотреть сообщение
Можно будет распределить метафункции, чтоб одно и то же не делать.
давай так: в директории tests создаем поддиректорию с именем тестируемого шаблона. (tests/at, к примеру) в ней, файл main.cpp в котором и будет реализован сам тест. тот кто создал директорию - тот и пишет этот тест.
что скажешь?

чтоб не тащить в тесты boost.test, я закожу инфрастуктуру тестов в tests/common/tests.hpp. согласуем за и против, и тогда начнем писать тесты.
мысли?


Цитата Сообщение от volovzi Посмотреть сообщение
А есть какие-нибудь предложения?
сейчас, на сколько я помню, нет контейнера последовательностей, типа mpl::vector<> ?
и алгоритмов недостает.
niXman вне форума
Ответ Создать новую тему

Похожие темы
Тема Автор
C++ Builder библиотека для png
подскажите пожалуйста, где можно скачать библиотеку для png формата, для использования png картинок в builder6
1rop
Qt Библиотека QT Linux X11 и библиотека QT Embedded Linux одно ито же???
Вот стал скачивать эти библиотеки и вижу - у них размер одинаковый......да и ссылка одна и та же..... Это одно и тоже ? а в чём прикол??? зачем разные названия?))) и ещё тогда вопрос... тогда получается что для сборки под Embedded Linux в configure нужно вписывать -embedded а в сборке под...
Racot
C# для начинающих Библиотека
Подскажите библиотеку на С-шарпе, которая рисует дерево...
Daniel58
Delphi и базы данных БД библиотека
Имеется таблица , с полями датаВыдачи, датаВозврата. определяю Cколько дней до возврата: DateDiff("d";Date();) функция выдает число оставшихся дней до возврата. Как сделать чтоб при отрицательном значении строка из таблицы выдача копировалась в другую таблицу ?
Lord_Rufus
С++ для начинающих Библиотека
Вот такая проблема - задали сделать библиотеку. Для этого нужно: сам исходник программы, header.h файл и файл реализации,например MyLibrary.cpp, в котором нужно подключить наш header.h . Сама прога у меня есть , а вот нужны header.h и MyLibrary.cpp. Вот прога (2 в 1) 1-ая прога - поиск элемента...
sanya93
Опции темы

Текущее время: 01:00. Часовой пояс GMT +4.

Компьютерный форум программистов и сисадминов
Powered by vBulletin® Version 3.8.7 PL2
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Рейтинг@Mail.ru Яндекс.Метрика