で関数型を引き離す離れthis questionピッククラステンプレートを使用して関数型への答えは:私はここで行われていたものを研究したよう特殊機能
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;
私はfunction_args
を書き換えてみました。私はdecltypeargs
テンプレートの必要性を排除するために関数を使用してこれを実行しようとしました。しかし、私自身は、不適切な構文に陥っ見つかり:
template <typename T>
tuple<> myTry();
template <typename Ret, typename... Args>
tuple<Args...> myTry<Ret(Args...)>();
私の希望はdecltypeargs<decltype(foo)>
を呼び出すために持つのではなくtuple
タイプを取得するためにdecltype(myTry<decltype(foo)>())
を呼び出すようになっていました。関数宣言でこれを行う方法はありますか?
。しかし、私はあなたが何か他に尋ねたいと思う。私にはあまり明確ではありません。 – Arunmu
@Arunmuあなたが私の質問に答えたように聞こえます。しかし、私は言葉遣いをどのように改善するかについてはっきりしていません。私は関数の戻り値と引数を分離しようとしています。そのためには特殊化を使用する必要があります。私は関数でそれをやりたかったのですが、私はできないように思えます。それはもっと明確ですか? –
あなたがしようとしていることがわかりません。 'myTry()'はそれを使用していないよりもタイピングが簡単です - あなたが解決しようとしている問題は何ですか? – Barry