Muszę się dowiedzieć, czy funkcja give ma funkcję X jako funkcję wywoływalną z podaną listą parametrów. Sprawdzenie nie powinno jednak dotyczyć wartości zwracanej przez .Jak sprawdzić, czy typ ma funkcję składową z dowolnym typem zwracanym?
Znalazłem this solution z another Stack Overflow question, który wydaje się działać dobrze. To, co robi to:
#include <type_traits>
template <typename C, typename F, typename = void>
struct is_call_possible : public std::false_type {};
template <typename C, typename R, typename... A>
struct is_call_possible<C, R(A...),
typename std::enable_if<
std::is_same<R, void>::value ||
std::is_convertible<decltype(
std::declval<C>().operator()(std::declval<A>()...)
), R>::value
>::type
> : public std::true_type {};
To jest dokładnie to, czego chcę, z wyjątkiem tego, że w czeku można również podać żądany typ zwrotu. Próbowałem znaleźć sposób, aby to zmienić, aby móc sprawdzić, nie biorąc pod uwagę typu zwrotu, ale nie mogłem wymyślić sposób.
Czy ktoś wie, jak to zrobić?
więc zasadniczo chcesz sprawdzić, czy funkcja 'powrót' 'void 'czy nie? – Valerij