Прочитав урок, я немного запутался в формулировке.Но я считаю, что все так просто: в учебнике объяснялось, почему заголовок шаблона распределителя показывает
allocator(const allocator&) throw();
и
template <class U> allocator(const allocator<U>&) throw();
хотя конструктор копирования довольно бесполезен для распределителя.И ответ был таков: спецификация распределителя не позволяет конструктору генерировать исключения.Поэтому открытый интерфейс конструктора копирования определяет конструкторы копирования со спецификацией исключений throw()
(не генерирует никаких исключений), чтобы не допустить, чтобы кто-то извлекал свой собственный распределитель с конструкторами копирования, которые могли бы вызвать исключение.эта ссылка для хорошего описания того, что такое спецификация исключения, если это то, что вас сбрасывает.(Не каламбур предназначен. Действительно.)
Таким образом, они не означали, что при создании распределителя вы должны предоставить конструктор копирования.Они просто указывали, что спецификация специально запрещает вам определять тот, который выбрасывает любые исключения.`