Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > result_of функтора из шаблона |
Автор: borisbn 28.1.2013, 14:14 | ||||||
Здравствуйте! Следующий код
выдаёт ошибку
заменить определение ф-ции foo на такое
нельзя, т.к. в вызове f() могут быть параметры. Дело в том, что ф-ция foo сама с f ничего не делает, а передаёт "дальше" и ей не нужно знать о наличии и количестве аргументов. Подскажите, пожалуйста, как при помощи std::result_of (или м.б. std::function) узнать тип возвращаемого значения функтора f. Спасибо. http://liveworkspace.org/code/vd5op$16 <--- самый простой вариант, который не работает http://liveworkspace.org/code/vd5op$19 <--- вариант, который мне, собственно, нужен |
Автор: borisbn 28.1.2013, 18:39 | ||||||
я не забыл, а убрал их, т.к. если сделать так
то тогда нельзя будет сделать так
по поводу второго варианта: мне не нужно вызывать f( ff() ), мне нужно передать их "дальше". Дело в том, что ff может быть объявлена как void some(); и тогда эта конструкция
работать не будет. В общем-то я уже сделал по-другому и всё заработало, но захотелось узнать, можно ли при помощи result_of вытащить return_type функтора, про аргументы которого ничего не известно... Добавлено через 4 минуты и 29 секунд Может как-то class ... Args заюзать... вроде ж они могут быть пустыми... Я работу с вариадиками ещё плохо знаю |
Автор: mes 28.1.2013, 18:52 | ||||||
непонятно, что есть "дальше" ..вполне возможно, что у него и надо спрашивать о возвращаемом типе..
учитывая, что функтор может иметь от нуля до множества операторов(), каждый со своим возврящаемым типом, непонятно, чего вообще должна узнавать result_of в таком случае.. если функтор соответствует концепции функтора, то по хорошему у него дожно быть result_type
пустыми могут.. но пока непонятно зачем нужна ваша "прокся" .. |
Автор: volatile 28.1.2013, 23:58 | ||
А если так:
Если ничо не напутал, то вроде удовлетворяет условиям озвученным во второй вашей ссылке LWS |
Автор: volatile 29.1.2013, 03:39 | ||
Это то да, только там есть одна засада. Оно не будет работать с функц.объектами, только с функциями. Вот это будет работать и тем и с другим:
|
Автор: borisbn 29.1.2013, 09:53 | ||
так и сделал))
тогда нельзя просто функцию подставить хммм... заманчиво. спасибо. вот такую штуку хотел замутить - http://liveworkspace.org/code/3eIS41$0 сначала думал чтобы run в trailing return возвращал тип, возвращаемый Waiter'ом, но потом понял, что )) Всем спасибо. Закрываю. |