Re[12]: Вывод типа шаблонного параметра функции
От: rg45 СССР  
Дата: 20.03.20 08:39
Оценка: 12 (1)
Здравствуйте, andyp, Вы писали:

A>Спасибо! У меня без decay_t не работало.


Ай блин, чаинки еще не утонули не все так безоблачно. Для произвольного невызываемого типа мой вариант валится по ошибке компиляции, вместо того, чтобы вычислиться в false. Придется все-таки прикрутить SFINAE:

http://coliru.stacked-crooked.com/a/131b84dd7522caf9

template <typename T, typename = bool>
struct is_predicate : std::false_type {};

template <typename T>
struct is_predicate<T, std::decay_t<typename decltype(std::function(std::declval<T>()))::result_type>> : std::true_type {};


Но и так неплохо, по-моему.
--
Справедливость выше закона. А человечность выше справедливости.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.