Задать вопрос
@communistic_sistema
Биохимик, но в программировании немного шарю

Как проверить, что класс является функтором?

У меня есть класс который реализует operator()
template<typename, typename = void>
struct is_functor : std::false_type {};

template<typename T>
struct is_functor<T, std::void_t<decltype(T::operator())>> : std::true_type {
	using type = dte_utils::return_type_t<decltype(T::operator())>;
};

Этот код работает до тех пор, пока операторов 1, как только их 2+ - выдает false
Как проверить. что класс функтор и как получить возвращаемый тип operator()?
  • Вопрос задан
  • 140 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
TrueBers
@TrueBers
Гуглю за еду
#include <type_traits>
#include <utility>

template<class F, class... Args>
using is_functor = std::is_invocable<F, Args...>;          

template<class F, class... Args>
using functor_result_t = std::invoke_result_t<F, Args...>;
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы