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?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage