| [/ |
| Copyright 1999-2003 Beman Dawes |
| Copyright 2014 Peter Dimov |
| |
| Distributed under the Boost Software License, Version 1.0. |
| |
| See accompanying file LICENSE_1_0.txt |
| or copy at http://boost.org/LICENSE_1_0.txt |
| ] |
| |
| [section:noncopyable noncopyable] |
| |
| [simplesect Authors] |
| |
| * Dave Abrahams |
| |
| [endsimplesect] |
| |
| [section Header <boost/core/noncopyable.hpp>] |
| |
| 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. |
| |
| [section Synopsis] |
| |
| `` |
| namespace boost |
| { |
| class noncopyable; |
| } |
| `` |
| |
| [endsect] |
| |
| [section Example] |
| |
| `` |
| #include <boost/core/noncopyable.hpp> |
| |
| class X: private boost::noncopyable |
| { |
| }; |
| `` |
| |
| [endsect] |
| |
| [section Rationale] |
| |
| 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. |
| |
| [endsect] |
| |
| [endsect] |
| |
| [endsect] |