5
このコードは正しい形式ですか? Ts
が空であっても、関数テンプレートの宣言はclangとgccの両方でエラーを出します。固定数のテンプレート引数を持つクラス内の複数のパック拡張パック
// error: too many template arguments for class template 'pair'
template<class I, class U, class... Ts>
void f(std::pair<I,U,Ts...>);
int main()
{
f(std::pair<int,int>());
}
関数呼び出しは意味がありませんgccの中で、このエラーが発生します。 int
への変換はありません。
note: cannot convert 'std::pair<int, int>()' (type 'std::pair<int, int>') to type 'int'
2つ以上のargを使用する場合は、std :: pairの代わりにstd :: tupleを試してください。 –