Я создаю класс, который должен эмулировать vector
(как интерфейс publi c), и в настоящее время я строю конструктор, который принимает в качестве параметра список инициализатора:
template<class T>
class DynamicArray{
public:
DynamicArray(std::initializer_list<T> l) : size(l.size()), capacity(l.size()), p(std::make_unique<T[]>(l.size())) {
unsigned int i = 0;
for(auto& el : l)
p[i++] = el;
}
private:
std::unique_ptr<T[]> p;
unsigned int size;
unsigned int capacity;
};
Как вы можете видеть, на данный момент я присваиваю элементы своему массиву с помощью operator=
.. это правильный путь или я должен использовать std::move
или std::forward
или что-то еще?
Кроме того, проверяя vector
, например, я вижу, что он принимает std::initializer_list
по значению, а не по константной ссылке ... почему?