Заголовок<<boost/noncopyable.hpp>>определяет класс<boost::noncopyable>. Предназначен для использования в качестве частной базы.<boost::noncopyable>имеет частный (в соответствии с C++03) или удаленный (в соответствии с C++11) конструктор копий и оператор присвоения копий и не может быть скопирован или назначен; класс, который происходит от него, наследует эти свойства.
<boost::noncopyable>Изначально его автором был Дэйв Абрахамс.
namespace boost
{
    class noncopyable;
}
 
#include <boost/core/noncopyable.hpp>
class X: private boost::noncopyable
{
};
 
Класс некопируемый имеет защищенные конструкторы и деструкторы, чтобы подчеркнуть, что он должен использоваться только в качестве базового класса. Дэйв Абрахамс отмечает озабоченность по поводу влияния на оптимизацию компилятора добавления (даже тривиальных встроенных) деструкторных деклараций. Он говорит:
“Вероятно, эта проблема неуместна, потому что<noncopyable>будет использоваться в основном для классов, которые владеют ресурсами и, таким образом, имеют нетривиальную семантику разрушения.& #8221;
С помощью C++2011 можно использовать оптимизированный и тривиальный конструктор и аналогичный деструктор, объявляя их и маркируя<default>. Это делается в рамках нынешней реализации.