![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Здравствуйте!
Следующий код
выдаёт ошибку
заменить определение ф-ции foo на такое
нельзя, т.к. в вызове f() могут быть параметры. Дело в том, что ф-ция foo сама с f ничего не делает, а передаёт "дальше" и ей не нужно знать о наличии и количестве аргументов. Подскажите, пожалуйста, как при помощи std::result_of (или м.б. std::function) узнать тип возвращаемого значения функтора f. Спасибо. http://liveworkspace.org/code/vd5op$16 <--- самый простой вариант, который не работает http://liveworkspace.org/code/vd5op$19 <--- вариант, который мне, собственно, нужен -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
![]() забыты скобки.. http://liveworkspace.org/code/3Wb7bl$3 |
|||
|
||||
borisbn |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
я не забыл, а убрал их, т.к. если сделать так
то тогда нельзя будет сделать так
по поводу второго варианта: мне не нужно вызывать f( ff() ), мне нужно передать их "дальше". Дело в том, что ff может быть объявлена как void some(); и тогда эта конструкция
работать не будет. В общем-то я уже сделал по-другому и всё заработало, но захотелось узнать, можно ли при помощи result_of вытащить return_type функтора, про аргументы которого ничего не известно... Добавлено через 4 минуты и 29 секунд Может как-то class ... Args заюзать... вроде ж они могут быть пустыми... Я работу с вариадиками ещё плохо знаю Это сообщение отредактировал(а) borisbn - 28.1.2013, 18:42 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||||
|
|||||||
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
непонятно, что есть "дальше" ..вполне возможно, что у него и надо спрашивать о возвращаемом типе..
учитывая, что функтор может иметь от нуля до множества операторов(), каждый со своим возврящаемым типом, непонятно, чего вообще должна узнавать result_of в таком случае.. если функтор соответствует концепции функтора, то по хорошему у него дожно быть result_type
пустыми могут.. но пока непонятно зачем нужна ваша "прокся" .. Это сообщение отредактировал(а) mes - 28.1.2013, 19:27 |
||||||
|
|||||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
А если так:
Если ничо не напутал, то вроде удовлетворяет условиям озвученным во второй вашей ссылке LWS Это сообщение отредактировал(а) volatile - 28.1.2013, 23:59 |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 37 Всего: 85 |
Это то да, только там есть одна засада. Оно не будет работать с функц.объектами, только с функциями. Вот это будет работать и тем и с другим:
|
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
так и сделал))
тогда нельзя просто функцию подставить хммм... заманчиво. спасибо. вот такую штуку хотел замутить - http://liveworkspace.org/code/3eIS41$0 сначала думал чтобы run в trailing return возвращал тип, возвращаемый Waiter'ом, но потом понял, что )) Всем спасибо. Закрываю. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |