У меня есть метод и два класса, определенные следующим образом:
template<template<class X> class T>
void doSomething()
{
T<int> x;
}
template <class T>
class ClassWithOneArg
{
T t;
};
template <class T1, class T2>
class ClassWithTwoArgs
{
T1 t1;
T2 t2;
};
Теперь я могу
doSomething<ClassWithOneArg>();
, но я не могу
doSomething<ClassWithTwoArgs>();
Однако яхотелось бы передать ClassWithTwoArgs в doSomething, где T2 = double.
Единственный найденный мной метод - это создать
template <class T1>
class ClassWithTwoArgs_Child
: public ClassWithTwoArgs<T1, double>
{
};
, а затем
doSomething<ClassWithTwoArgs_Child>();
Это работает, но в моем конкретном случае все классы требуют аргумента конструктора, и поэтому я должен создать конструктор с этим аргументом также в классе _Child и передать его в базу, которой я действительно хочу избежать.
У вас есть идея, как это сделать?
Большое спасибо!