クラステンプレートのテンプレート引数は、現在は関数テンプレートの場合のように多かれ少なかれ推測されます。
Hereが該当する論文です。上記の論文の例としてクラステンプレートと複数のパラメータパックのテンプレート引数の控除
:控除が発生したときに
template<class ... Ts> struct X { X(Ts...) };
X x1{1}; // OK X<int>
X x11; // OK X<>
関数テンプレートは、別の興味深い特徴を持っています。
は、次のコードを考えてみましょう:
template<typename... U, typename... T>
auto func(T&&...) {}
// ...
// U is int, char - T is int, double
func<int, char>(0, .0);
私たちは、限り控除は、それらを区別するのに役立ちますようパック2つのパラメータを持つことができます。
タプルなどの構造体にラップする必要はありません。
クラステンプレートでも同じことが可能ですか?
例として:紙は以下の例が含まれ
template<typename... U, typename... T>
struct S {
S(T&&...) {}
};
// ...
// U is int, char - T is int, double
S<int, char> s{0, .0};
:とにかく
template<class ... Ts> struct X { X(Ts...) };
X<int> x3{1, 'a', "bc"}; // OK X<int,char,const char*>
を、それはまったく同じものではありませんし、私はそれがされるかどうかわからないんだけど許可されているかどうか。
答えは - _noなので、許されませんよ、そうですか? – skypjack