Просто придуманный этот вопрос. Какая-либо подсказка?
классы, которые нельзя скопировать. Контейнеры STL требуют, чтобы объекты были копируемыми, поскольку контейнер владеет копией этого объекта и должен иметь возможность перемещать его.
Моя любимая вещь, которую не следует помещать в контейнер STL, - это std :: auto_ptr ... случаются очень плохие вещи. .. в основном неожиданная потеря предметов, я думаю.
В общем, все, что нельзя скопировать, не может попасть в контейнер - вы получите ошибки компиляции. Что-то с ненормальной семантикой копирования (например, auto_ptr) не должно помещаться в контейнер (но вы, вероятно, не получите никаких ошибок компилятора). В качестве контейнера можно создавать различные временные копии.
Я думаю, что без «нормального» конструктора по умолчанию и оператора присваивания вы также столкнетесь с некоторой болью.
Класс не может выбрасывать исключения в деструктор ... ну, ни один класс никогда не должен бросать в деструктор
В зависимости от операций, которые вы выполняете, вам часто нужен конструктор по умолчанию в дополнение к копируемости для объектов, хранящихся в контейнерах. Для объектов, передаваемых алгоритмам, есть и другие требования, например, быть вызываемым или инкрементируемым. Эти требования хорошо документированы.
Зависит от контейнера, для получения дополнительной информации в разделе 23 Стандарта указаны требования для всех контейнеров и методов.
Однако, чтобы перестраховаться, вы должны считать, что всегда требуется следующее: Конструкция по умолчанию и Копия конструкции