Re[10]: std::function, could not deduce template argument
От: andyp  
Дата: 16.02.15 11:08
Оценка: 10 (1)
static_cast здесь не нужен.
return vfunc(static_cast<function>(lambda));

У std::function есть шаблонный конструктор из объекта-функтора, у которого есть operator().
Наверное, имелось в виду
return vfunc(function(lambda));
Re[11]: std::function, could not deduce template argument
От: BulatZiganshin  
Дата: 16.02.15 11:29
Оценка:
Здравствуйте, jazzer, Вы писали:

J>ну типа так (пишу в браузере):


попробуй в https://ideone.com/

J> // объект-лямбда объект-аргумент типа argT

J> template<class L, class = decltype( ( *(L*)nullptr )( *(argT*)nullptr ) )> // SFINAE

так SFINAE точно так же к вызовам функций применимо, в чём разница?
Люди, я люблю вас! Будьте бдительны!!!
Re[12]: std::function, could not deduce template argument
От: Evgeny.Panasyuk Россия  
Дата: 16.02.15 11:35
Оценка: 12 (1)
Здравствуйте, BulatZiganshin, Вы писали:

J>> // объект-лямбда объект-аргумент типа argT

J>> template<class L, class = decltype( ( *(L*)nullptr )( *(argT*)nullptr ) )> // SFINAE
BZ>так SFINAE точно так же к вызовам функций применимо, в чём разница?

Разница в том, что здесь используется argT, пришедший через аргумент шаблона function.
Если в обычный шаблон функции также передавать дополнительный шаблонный параметр с типом сигнатуры, то будет работать и там.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.