В моем коде я нахожу много следующего:
{
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
}
Я пытался использовать функции с переменными числами, но попал в кучу ошибок компиляции. Я бы предпочел не использовать макросы, если это возможно. Спасибо!