![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| boostcoder |
|
||||||||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
всем привет.
к примеру, имеется у нас следующая функция:
используем мы ее как обычно:
тут проблем нет. теперь давайте представим, что эта функция на самом деле декларирована так:
а мы хотим ее использовать так:
т.е. проблема в том, что функция не моя, а мне нужно под нее подстраиваться. вторая проблема в том, что у функции каждый аргумент (ArgWrapper) получает два значения которые описывают один аргумент. в общем, последний пример, для ясности должен компилятором генерироваться так:
не знаю как еще описать.. |
||||||||||
|
|||||||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
проблема пройтись по списку ? рекурсия в помощь..
как обернуть отдельный тип полагаю вопросов не возникает.. |
|||
|
||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
оказалось все сильно проще. просто нужно больше времени уделять чтению доки.
http://liveworkspace.org/code/bcd126457d6b...dddac6e8f4fe874 я не знал что при "развороте" вариадика, может так же развернуться все выражение в котором вариадик используется это многое упрощает и в моих прошлых задачах! всем спасибо. зы mes, не могли бы Вы пояснить такой момент. почему злополучную строку я не могу записать так?: invoker::func({typeid(Args).name(), &args}...); вроде как это валидная запись.. но компилятор говорит:
Это сообщение отредактировал(а) boostcoder - 11.1.2012, 18:47 |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
mes, по правде говоря, мне подсказали это решение.
но сейчас, полазав по гуглу, я действительно нашел упоминание (вскользь) о такой возможности: http://www.open-std.org/jtc1/sc22/wg21/doc.../2006/n2080.pdf глава "2.5 Is the Meta-Operator '...' Necessary?" http://www.generic-programming.org/~dgrego...-templates.html в самом начале, в примере:
все же мало пока что доки по возможностям нового стандарта, и еще меньше людей, которые уже достаточно плотно используют С++11... Добавлено через 9 минут и 42 секунды еще тут большой кусок доки с примерами: http://publib.boulder.ibm.com/infocenter/l..._templates.html Добавлено через 13 минут и 8 секунд и здесь, в первом ответе используется такой же трюк: http://stackoverflow.com/questions/7381805...iadic-templates
Это сообщение отредактировал(а) boostcoder - 11.1.2012, 21:21 |
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
boostcoder, спасибо, никогда раньше не приходилось натыкаться, классная возможность!
Это сообщение отредактировал(а) mes - 14.1.2012, 11:39 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
та же самая проблема. уже третий день. думал только у меня. ну....или...модеры наказали ;)
|
|||
|
||||
| spyswamp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 349 Регистрация: 18.8.2006 Репутация: 1 Всего: 7 |
Оффтоп: +1. Репутацию даже смотреть сейчас нельзя.
-------------------- - why you call it beta? - cuz it's betta then nothin' |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
карму починили.
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
гы. и на википедии появился этот пример
заговор какой-то, чесслово.. http://en.wikipedia.org/wiki/Variadic_templates Добавлено @ 09:54
да и вообще, всю страницу по С++11 сильно обновили: http://en.wikipedia.org/wiki/C%2B%2B11 Это сообщение отредактировал(а) boostcoder - 13.1.2012, 10:03 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |