Вызывает ли vector.insert (...) конструктор или оператор присваивания? - PullRequest
1 голос
/ 22 октября 2011

У меня есть вектор с элементами типа class A. Класс A имеет явно определенный конструктор копирования, но оператор копирования стал закрытым и неопределенным (он не предназначен для использования). Если я вставлю новые элементы в вектор, как показано ниже

A walker;                      //This calls the default constructor.
std::vector< A > vec;
std::vector< A >::iterator it = vec.begin();
vec.insert( it, walker );      //Shouldn't this call the copy constructor?

Я получаю сообщение о том, что оператор копирования является частным. Но не должен ли вектор использовать конструктор копирования?

1 Ответ

4 голосов
/ 22 октября 2011

vector действительно использует конструктор копирования для вставленного элемента.Однако vector все еще нуждается в операторе присваивания внутри, он находится в пределах требований для типа vector, который можно назначить.Я считаю, что C ++ 11 теперь требует только перемещения-присваивания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...