Ich muss herausfinden, ob ein Give-Typ Funktion X als eine aufrufbare Funktion mit einer bestimmten Parameterliste hat. Die Überprüfung sollte nicht kümmern über den Rückgabewert jedoch.Wie finde ich heraus, ob ein Typ eine Memberfunktion mit einem beliebigen Rückgabetyp hat?
Ich fand this solution von another Stack Overflow question, die gut zu funktionieren scheint. Was sie tut, ist dies:
#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 {};
Das ist genau das, was ich außer dass will bei der Prüfung Du auch den gewünschten Rückgabetyp liefern. Ich habe versucht, einen Weg zu finden, dies zu modifizieren, um zu überprüfen, ohne den Rückgabetyp zu berücksichtigen, aber ich konnte keinen Weg finden.
Weiß jemand, wie man das macht?
so im Wesentlichen Sie, ob die Funktion überprüfen wollen 'Rückkehr' 'Leere 'oder nicht? – Valerij