![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
всем привет.
никак не могу понять, почему код ведет себя так?!
http://liveworkspace.org/code/e17deefa73e4...f44b26d2bc05ea9 вопрос в том, почему в первом случае вызывается func() для пустого вектора? дока по теме: boost::fusion::vector boost::fusion::make_vector() спасибо. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
потому что результат make_vector<..> не есть vector<..> Добавлено через 2 минуты и 12 секунд решение в лоб : http://liveworkspace.org/code/23f157665e86...369fc8d313fe4f8 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
не понял что Вы хотели сказать.. результат make_vector() - variadic vector. т.е. make_vector() всегда возвращает тип boost::fusion::vector<boost::fusion::void_, boost::fusion::void_, boost::fusion::void_, N...>, т.е. вектор константного размера. только типы слева подставляет те, которые переданы аргументами в make_vector(). а это не совсем boost::fusion::vectorN<> так и сделал.. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
и кому мне верить ? boost'у или boostcoder'у ? грубо: та техника (привет SFINAE), которую Вы использовали, требует "точного совпадения" при выискивании кандидата.. для сравнения func и Func из http://liveworkspace.org/code/198cbe17f21c...bf8d00f191b7269 Func спокойно принимает и vector и vector_n, так как у vector есть конструктор принимающий vector_n.. Это сообщение отредактировал(а) mes - 5.5.2011, 22:47 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
mes, значит я что-то напутал..
http://liveworkspace.org/code/7f7d33d49f91...c0efe9705d5369b и в правду не вариадик.. просто я вчера насмотрелся на сообщение об ошибке. и там мне компилятор показывал вектор полный void_ ну сорри.. ни хотел никого вводить в заблуждение |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
не знаю куда Вы смотрели, но при первом ответе, я сделал вывод о возвращении vector_n, именно по сообщению об ошибке Добавлено через 35 секунд так что винить компилятор в сокрытии причины, думаю, не стоит |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |