D
есть скажем callable тип F, а также ReturnType и ...Args [специализацией объединенные в ReturnType(Args...)]
нужно чтобы был true_type если F можно вызвать как ReturnType(Args...) и false_type если нельзя
template<class F, class ReturnValue, class... Args>код выше не работает, почему не знаю
struct IsInvokable;
template<class F, class ReturnValue, class... Args>
struct IsInvokable<F, ReturnValue(Args...)> : public std::false_type
{};
template<class F, class ReturnValue, class... Args>
struct IsInvokable<F, ReturnValue(Args...)> : public std::true_type
{
private:
using SfinaeType = decltype(static_cast<ReturnValue>(std::declval<F>()(std::declval<Args>()...)));
};
заранее спасибо