私のコードには次のようなものがたくさんあります。
{
SomeClass<VisitorType> obj(visitor, param1, param2, 3, 4);
}
{
OtherClass<VisitorType> obj(visitor, 5, "six");
}
中括弧は、オブジェクトの存続期間が制約されていることを確認するために必要です。作業はコンストラクタとデストラクタ(RAIIスタイル)で行われます。これには十分な理由があり、これらのクラステンプレートの他のユーザーは、単に構築および破棄する以上のことを行います。
これを関数呼び出しのようなものに要約するのに便利なイディオムはありますか?可能な場合は強い型付けを保持しますか?
例えば
f<SomeClass>(visitor, param1, param2, 3, 4);
f<OtherClass>(visitor, 5, "six");
f<>()
次のようなものはどこにありますか?
template <template <class> class C, class V>
void f(V &v, ...)
{
C<V> c(v, ...); // magic needed here
}
可変個引数関数を使用してみましたが、大量のコンパイルエラーが発生しました。できればマクロは使いたくないです。ありがとう!