![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| newbee |
|
||||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 4 Всего: 19 |
Бустик, я совсем запуталась в твоих буст-пппроблемах :(
Сделала OR сама, ленивый, молодежный, современный!
Критика, вопросы, предложения приветствуются! PS. В архиве несколько вспомогательных файлов. Присоединённый файл ( Кол-во скачиваний: 7 )
OR_AND.tar 20,00 Kb-------------------- You're face to face With man who sold the world |
||||
|
|||||
| k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: 1 Всего: 5 |
Жду решения на Хаскелле. -------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
слуш.
а что если макрос будет раскрываться так?
т.е. все выражения будут вычисляться сразу. а? или не актуально? Добавлено через 2 минуты и 33 секунды а в архиве какие конкретно вирусы? Добавлено через 5 минут и 48 секунд вообще у тебя не плохо получилось. и без зависимости от буста |
|||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 4 Всего: 19 |
Но сначала вычислять никак нельзя. Посмотри любой свой код, с нелинивыми операторами if, || и && он скорее всего рассыпется. Добавлено через 2 минуты и 48 секунд Он несжатый) Потому что нагенерировала специфичных под задачу макросов? Хотела сделать более обобщенный FOREACH, но там были бы сложности и неудобства. Или что еще плохо? -------------------- You're face to face With man who sold the world |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 4 Всего: 19 |
Блин, косая я. Не плохо получилось)) Неплохо, да! ))
-------------------- You're face to face With man who sold the world |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
это не стёб был. в самом деле нормально получилось. просто и понятно. Добавлено через 26 секунд Добавлено через 14 минут и 49 секунд ну..мне простительно. русский мне не родной язык |
|||
|
||||
| math64 |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Вычислятся быдут один раз. Проверяться и копироваться - да, много раз (при сложной формуле).
Идеи? Не пытаться делать макрос в переменным числом агрументов, генерирующих всё выражение, а набор макросов генерирующих фрагменты выражения. Временной для запоминания переменной можно обойтись одной, поэтому можно опробовать что-то типа
Возможно использовать набор макросов AND2(var1,var2), AND3(var1,var2,var3) и т.д. Добавлено через 5 минут и 50 секунд Неправильно. Выражения должны вычисляться только после проверки предыдущих:
|
||||
|
|||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 4 Всего: 19 |
math64, я не понимаю, что у тебя за бегины и енды... Ты что-то недокопипастил?..
Добавлено через 10 минут и 41 секунду Кстати... Есть ли у кого-нибудь идеи, как избавиться от typeof и ({}) расширений? На шаблонах или хз как еще... Возможно придется компилировать под винду, там я предпочитаю компилятор MSVC. -------------------- You're face to face With man who sold the world |
|||
|
||||
| vol4ek |
|
|||
![]() конь в пальто ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 1.5.2011 Где: Минск Репутация: 0 Всего: 0 |
||||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Отвечал на последнее сообщение предыдущей страницы - не заметил что есть ещё сообщения. Это просто идеи, как построить макросы - не проработано до конца. Если типы всех переменных одинаковы, можно использовать только одну временную переменную, которая объявлена в макросе BEGIN(type) Макрос END закрывает объявление Макросы, используемые в середине не проработаны. Идея c AND2(), AND3(), OR2(), OR3() - уже не актуальна, Вы сделали лучше. Как избавиться от ({}) - я уже предлагал - класс Saver, его можно переделать, чтобы был синглетоном и замоминал всё что можно как Variant, но typeof() всё равно нужен, чтобы получить запомненное значение нужного типа. Но если комплятор поддерживает ({}) - лучше использовать их (в объявлении макросов - условная трансляция) |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| math64 |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
уже объяснял - не прочитал всё до конца если нет - x ? y : z всё равно не скомпилируется, или все должны приводиться к типу первого выражения, его и использовать, или объявить тип переменной самостоятельно.
В этом случае тип результата нужно объявлять самостоятельно
Правда, есть случай, когда даже при одном типе объединять нельзя:
Но он тоже не компилируется - результат ({ }) не int&, а int |
||||||
|
|||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
||||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
Нужно доработать макросы AND и OR, чтобы принимали переменное число агрументов (как в PP_NARG.h или из boost) и моглм комбинироваться.
TEST используется для задания значения по умолчанию для обычных типов TESTR используется для задания значения по умолчанию для ссылок для ссылок желательно обезопасить от порчи значение по умочанию.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |