Безопасно ли использовать emplace_back с контейнером unique_ptrs?

Учтите следующее:

std::vector<std::unique_ptr<int>> ptrsToInts;
ptrsToInts.emplace_back(new int);

Если перераспределение происходит в векторе, и это не удается (бросаяstd::bad_alloc), я "в безопасности", или я буду пропускатьint?

C ++ 11 23.3.6.5 [vector.modifiers] / 1 говорит:

Если исключение выдается кроме конструктора копирования, конструктора перемещения, оператора присваивания или оператора присваивания перемещенияT или любымInputIterator операции нет никаких эффектов.

который, кажется, указывает на то, что это потенциальная проблема. То есть, если нет «никаких эффектов», то нетunique_ptr когда-либо был построен, и, следовательно, поведение деструктора, на которое можно положитьсяdelete этот указатель не произойдет. (Что может означать, чтоemplace_back должны быть запрещены для контейнеровunique_ptrs)

Ответы на вопрос(1)

Ваш ответ на вопрос