Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

noncopyable

Header <boost/core/noncopyable.hpp>

Authors

  • Dave Abrahams

The header <boost/noncopyable.hpp> defines the class boost::noncopyable. It is intended to be used as a private base. boost::noncopyable has private (under C++03) or deleted (under C++11) copy constructor and a copy assignment operator and can't be copied or assigned; a class that derives from it inherits these properties.

boost::noncopyable was originally contributed by Dave Abrahams.

namespace boost
{
    class noncopyable;
}
#include <boost/core/noncopyable.hpp>

class X: private boost::noncopyable
{
};

Class noncopyable has protected constructor and destructor members to emphasize that it is to be used only as a base class. Dave Abrahams notes concern about the effect on compiler optimization of adding (even trivial inline) destructor declarations. He says:

Probably this concern is misplaced, because noncopyable will be used mostly for classes which own resources and thus have non-trivial destruction semantics.

With C++2011, using an optimized and trivial constructor and similar destructor can be enforced by declaring both and marking them default. This is done in the current implementation.


PrevUpHomeNext