Рассмотрим этот код:C++ массив различных общих типов
template<typename T>
void doSomething(std::vector<T> arr) {
for (auto i = 0; i < arr.size(); ++i)
std::cout << arr[i] << std::endl;
}
int main()
{
doSomething(std::vector<int> { 1, 5, 7 });
}
В этом примере шаблон используется довольно регулярно. Массив из трех целых чисел передается в функцию, которая имеет параметр массива типа T
, общие типы. Затем указывается, что они относятся к типу int
: std::vector<int> { 1, 5, 7 }
.
Что я хотел бы сделать, это инициализировать std::vector
, чтобы он содержал три разных типа. Что-то вроде этого:
doSomething(std::vector<T> { 1, "Hi", 2.7f });
Здесь нет указанного типа, а std::vector
содержит не только целые числа. Есть ли способ сделать такое? Благодаря!
(я думаю) Вы могли бы подделать это с помощью множества классов, но это был бы ужасный код. – Amit