![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
День добрый.
Разбираюсь с variadic template. Захотелось набрасать такую штуку
http://liveworkspace.org/code/4299c32fb77d...2ea687a8a7b0942 получаю ошибки: в случае (1)
в случае (2)
скорее всего, ни то ни то неправильно, но, я думаю, вы понимаете, что хотелось сделать Вопрос: как сохранить переменное количество аргументов ? Спасибо. P.S. bind, function не предлагать. Я просто разбираюсь, и мне нужно не решение конкретной задачи, а научиться пользоваться variadic template'ми P.P.S. Эти темы http://stackoverflow.com/questions/1989552...-expand-identif http://stackoverflow.com/questions/4691657...ut-expanding-it http://www.cplusplus.com/forum/general/47084/ смотрел, и, в общем-то, там похожие вопросы, но там решается немного другие задачи Это сообщение отредактировал(а) borisbn - 4.12.2011, 14:38 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
в std::tuple<> или boost.tuple или boost.fusion::vector |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
весь код не смотрел, но по поводу вопроса tuple поможет.. по реализации первым напрашивается обернуть его в структуру, чтоб получить новый тип, и для полученого специализировать шаблонный инвокер.. (функцию обертку для применения аргументов к нужной функции).. Добавлено через 47 секунд он с вариадиками же не работает ? или уже начал ? |
|||
|
||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
при использовании gcc-4.5.1-4.5.2 я писал адаптер. в 4.6.1-4.6.2 вроде уже должен. но не проверял. адаптер:
Добавлено через 3 минуты и 20 секунд ан нет. все еще недопилено:
http://liveworkspace.org/code/662ad39edfe8...c95296da8dc6422 Добавлено через 3 минуты и 44 секунды значит с использованием адаптера. |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
это первое, что советуют на СОшке. И с этим, вроде, всё понятно. Как теперь в ф-ции Delegate::run() вызвать
если m_fun - указатель на обычную ф-цию, которая принимает два инта (к примеру), а не tuple... -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
в прошлый рах раза два прочитал - не понял. Сейчас ещё раз перечитал раза три - рез-т тот же. "обернуть его в структуру, чтоб получить новый тип" - до сюда ясно "и для полученого специализировать шаблонный инвокер.. " - можете (если не сложно) в моей поделке добавить чего там не хватает ? -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
http://www.boost.org/doc/libs/1_48_0/libs/...ons/invoke.html только при помощи boost::fusion::push_front() сначала вставь адрес самого объекта. псевдокод:
Добавлено через 9 минут и 53 секунды да, и прочти про семейство функций invoke(). к счастью их всего три |
|||
|
||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
пробую так
http://liveworkspace.org/code/fd421efe0c12...ce89a5764890d66 выдаётся миллион ошибок типа
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
какой-то баг похоже в бусте появился... или что-то изменилось, ибо банальный код перестал работать.
http://liveworkspace.org/code/ceeb6831c613...fc13be57b084114 обратите внимание на:
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
ааа ,нет. это я затупил) Добавлено через 3 минуты и 4 секунды borisbn, позже доковыряю. спешу. http://liveworkspace.org/code/35b5fd6a6f3d...fac6dbcced127d1 Добавлено через 11 минут и 47 секунд все же доковырял. держи: http://liveworkspace.org/code/f1471c281476...54f545431246d06
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
mes, угу, интересно.
Добавлено через 2 минуты и 15 секунд забавно |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
borisbn, что-то ты как-то внезапно пропал... вариант решения не устроил?
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |