Это не сработает, вам нужен полиморфизм подтипа , но шаблоны предоставляют своего рода параметрический полиморфизм , который не соответствует вашей цели, std::vector<T>
и std::vector<U>
с T != U
два совершенно разных типа.
Вы можете иметь полиморфный тип данных, например:
union DataType
{
int i;
double d;
};
std::vector<DataType> values;
или со сложным типом данных с виртуальными методами, но это может снизить производительность,Или вы можете переместить аргумент шаблона на более высокий уровень, например:
template<typename T>
void process()
{
std::vector<T> sample;
sample.push_back(whatever);
/* process */
}
В противном случае лучше всего обернуть std::vector<T>
в другой тип, который может обеспечить необходимый вам полиморфизм.
Хотелось бы узнать, в чем именно ваша проблема, поскольку это может быть проблема XY.