Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> append mpl-последовательности, и проблема с совпадением имен 
V
    Опции темы
boostcoder
Дата 8.1.2011, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



всем доброго вечера.
следующий код:
Код

typedef boost::mpl::map<
   boost::mpl::pair<..., ...>
> map_t; // исходный тип

//...

typedef boost::mpl::insert<
   map_t, // используем исходный тип для добавления нового элемента
   boost::mpl::pair<..., ...>
>::type map_t; // упс! тип с таким именем уже существует ;)



суть:
есть некоторые макросы, которые из аргументов создают mpl-тип.
эти макросы разбросаны по коду.
для того, чтоб в результате получить тип, который в себе содержит все элементы созданные макросами, каждый последующий макрос должен знать имя типа объявленного до него.
как это сделать? - захардкодить имя этого типа. и в результате получим продемонстрированную выше проблему.

подскажите решение.
спасибо.
PM WWW   Вверх
boostcoder
Дата 12.2.2011, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



up.
PM WWW   Вверх
mes
Дата 12.2.2011, 01:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



конечный продукт этих макросов что представляет ? 

Это сообщение отредактировал(а) mes - 12.2.2011, 01:50


--------------------
PM MAIL WWW   Вверх
GoldFinch
Дата 12.2.2011, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



макросы зло.

но если хочется - есть boost.preprocessor
PM MAIL ICQ   Вверх
boostcoder
Дата 12.2.2011, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(GoldFinch @  12.2.2011,  01:48 Найти цитируемый пост)
есть boost.preprocessor

пытался... не нашел решения.
подскажите?
PM WWW   Вверх
GoldFinch
Дата 12.2.2011, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



нда... есть BOOST_PP_COUNTER, но он использует инклуды, а их в макрос не засунуть.

в msvc есть __COUNTER__ , может и в гцц есть что-то похожее
PM MAIL ICQ   Вверх
boostcoder
Дата 12.2.2011, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(GoldFinch @  12.2.2011,  01:56 Найти цитируемый пост)
в msvc есть __COUNTER__ , может и в гцц есть

есть.
но чем это поможет?
PM WWW   Вверх
GoldFinch
Дата 12.2.2011, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



вместо 
Код

typedef ... T1;
typedef ... T1 ... T2;

можно использовать
Код

struct T1 { typedef ... type; };
struct T2 { typedef ... T1::type ... type; };

а значит можно использовать
Код

template<int ID> stuct T;
template<> struct T<1> { typedef ... type; };
template<> struct T<2> { typedef ... T<1>::type ... type; };

для генерации последовательных чисел - использовать __COUNTER__

Добавлено через 2 минуты и 15 секунд
но макросы и метапрограммирование для генерации кода - это зло.

Это сообщение отредактировал(а) GoldFinch - 12.2.2011, 02:13
PM MAIL ICQ   Вверх
boostcoder
Дата 12.2.2011, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



GoldFinch, хм... вариант..
опробую...
спасибо smile 
PM WWW   Вверх
boostcoder
Дата 12.2.2011, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



Цитата(mes @  12.2.2011,  01:31 Найти цитируемый пост)
конечный продукт этих макросов что представляет ?

дело в том, что когда я создавал тему, макросы предполагались. но сейчас их надобность находится под вопросом...
PM WWW   Вверх
mes
Дата 12.2.2011, 02:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(boostcoder @  12.2.2011,  01:30 Найти цитируемый пост)
дело в том, что когда я создавал тему, макросы предполагались. но сейчас их надобность находится под вопросом... 

угу макросы это инструмент.. и судя по теме вопрос надо ставить 
не "как изловчиться инструментом в этом случае?",
 а "каким инструментом достичь цели?"


--------------------
PM MAIL WWW   Вверх
GoldFinch
Дата 12.2.2011, 02:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



mes, чтобы понять каким инструментом достичь цели, сначала надо понять как можно изловчиться каждым инструментом из имеющихся.
PM MAIL ICQ   Вверх
boostcoder
Дата 12.2.2011, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 49
Всего: 110



GoldFinch, все сработало как надо. доволен как слон smile 
спасибо огромное smile 
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0944 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.