私はコンストラクタ内で任意の数の変数を取ることができるバリデーショナルテンプレートクラスを持ち、std::tuple/std::pair
なども持っています。バリデーションテンプレートに "using"キーワードを使用する方法
さまざまな戻り値の型を持つ関数にこのラッパーを使用したいと思います。例えば
:私はこのように使用して宣言したいと思います第三のクラスで今
class f1
{
using output = double;
output operator() { do_smth };
}
class f2
{
using output = std::tuple<double,int>;
output operator() { do_smth };
}
template <typename... Types>
class OutputType
{
std::tuple<Types...> m_val;
public:
OutputType(std::tuple<Types...>&& val) : m_val(val) {};
OutputType(Types&& ... val) : m_val(std::forward<Types>(Types)...) {};
};
:それは、正しいことをやって
template <typename F>
class dummy
{
using Output = typename OutputType(typename F::Output));
}
がどのようにステートメントを使用して上記を宣言しますdummy<f2>
?
(すなわちOutputType<double,int>
なくOutputType<std::tuple<double,int>>
)
で次
を次のように
dummy
を定義しますか?あなたのコードに多くの書式の間違いが含まれています...ここで必要なのはおそらく、 'std :: tuple'の' dummy'を特化することです。 – Holtタプルをパックに変換し、そのパックを 'OutputType'に送ることができるかもしれません。それがどのように見えるかわからない。タプルをパラメータパックに変換する際には、既にここにはたくさんのものがあります。 – NathanOliver