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

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

std::vector 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)

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