私はこのクラステンプレートを持っています:
template<class... T>
class Test {
std::vector<TestCase*> test_cases;
public:
Test() {
// Here, for each T an instance should be added to test_cases.
test_cases.push_back((new T)...);
}
};
これは1つのテンプレート引数では問題なく機能しますが、複数の引数では次のエラーが発生します。
error: too many arguments to function call, expected 1, have 2
この方法で可変個引数テンプレートを使用するにはどうすればよいnew
ですか?正しい構文は何ですか?
編集:私の質問は完全に明確ではなかったと思います。私が欲しいのはこれです:
Test<TestCase1, TestCase2, TestCase3>;
// The constructor will then be:
test_cases.push_back(new TestCase1);
test_cases.push_back(new TestCase2);
test_cases.push_back(new TestCase3);
私のコンパイラはclang163.7.1で、このフラグは次のとおり-std=c++0x
です。