Zerlegbarer Funktionstyp mit spezialisierter Funktion
Die Antwort aufdiese Frag wählt einen Funktionstyp anhand einer Klassenvorlage aus:
template <typename T>
struct function_args {};
template <typename R, typename... Args>
struct function_args<R(Args...)> {
using type = tuple<Args...>;
};
template <typename T>
using decltypeargs = typename function_args<T>::type;
Als ich studierte, was hier gemacht wurde, versuchte ich, @ umzuschreibfunction_args
. Ich habe versucht, dies mit einer Funktion zu tun, um die Notwendigkeit für das @ zu beseitigdecltypeargs
Vorlage. Aber ich befand mich in einer unsachgemäßen Syntax:
template <typename T>
tuple<> myTry();
template <typename Ret, typename... Args>
tuple<Args...> myTry<Ret(Args...)>();
Meine Hoffnung war es gewesen, @ anzurufdecltype(myTry<decltype(foo)>())
um das zu bekommentuple
type anstatt @ aufrufen zu müssdecltypeargs<decltype(foo)>
. Gibt es eine Möglichkeit, dies mit einer Funktionsdeklaration zu tun?