#include <iostream>
#include <initializer_list>
#define init_l std::initializer_list
template <typename T>
class Vector {
T* data;
int N;
public:
Vector(int N_p = 0) : data(new T[N_p]), N(N_p) { }
int& operator[](int n) { return data[n]; }
Vector& operator=(const init_l<T>& l) {
if (N != static_cast<int>(l.size())) {
delete[] data;
N = l.size();
data = new T[N];
}
std::copy(l.begin(), l.end(), data);
return *this;
}
};
int main() {
Vector<int> m(5);
m = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; ++i) { // Цикл для вывода элементов
std::cout << m[i] << " ";
}
std::cout << std::endl;
return 0;
}
Не совсем понимаю в этом коде почему operator= принимает const init_l& l а не const init_l l
Как он может принимать T& если мы передаем в него T? (Для краткости заменил T)
Мы же передаем список, а не ссылку на список. Разве нет?