Opened 6 years ago

Closed 3 years ago

#6578 closed Feature Requests (fixed)

Update noncopyable for C++11

Reported by: Daryle Walker Owned by: viboes
Milestone: Boost 1.58.0 Component: utility
Version: Boost Development Trunk Severity: Optimization
Keywords: noncopyable Cc:


Here's a quick update to boost::noncopyable for C++11, which has added enough primitives to express the concept directly. I tried it out with a copy of GCC 4.6, and have included the patch (with "svn diff --git").

Attachments (1)

noncopyable_cpp11.git.2.diff (3.1 KB) - added by Daryle Walker 6 years ago.
Changes for updating noncopyable for Cxx11

Download all attachments as: .zip

Change History (7)

Changed 6 years ago by Daryle Walker

Changes for updating noncopyable for Cxx11

comment:1 Changed 5 years ago by viboes

Owner: changed from No-Maintainer to viboes
Status: newassigned

comment:2 Changed 5 years ago by viboes

Milestone: Boost 1.50.0Boost 1.54.0

Committed revision [83833].

comment:3 Changed 5 years ago by viboes

Resolution: fixed
Status: assignedclosed

(In [83869]) utility/noncopyable : fix #6578.

comment:4 Changed 4 years ago by Robert Ramey

Resolution: fixed
Status: closedreopened


I'm having a problem with this patch. My gcc 4.53 compiler gives the error message:

"noncopayable:: declared with non-public access cannot be defaulted in the class body"

Which seems to make some sense to me. My copy of the standard (section 8.4.2) says "If it[the function] is explicitly defaulted on its first declaration, — it shall be public," As usual the standard text is somewhat convoluted, but that what it says to me. I'm not sure why the test passes. The macro name (BOOST_NO_DEFAULTED_FUNCTIONS used to condition this code has been marked as deprecated in favor of a new one (BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) i don't know if that might be related.

Robert Ramey

comment:5 Changed 4 years ago by viboes

I have no access to gcc-4.5.3. Please could you move to the public section and see how it works?

comment:6 Changed 3 years ago by viboes

Milestone: Boost 1.54.0Boost 1.58.0
Resolution: fixed
Status: reopenedclosed

It seems the new code fixes this issue.

  class noncopyable
      BOOST_CONSTEXPR noncopyable() = default;
      ~noncopyable() = default;
      noncopyable() {}
      ~noncopyable() {}
      noncopyable( const noncopyable& ) = delete;
      noncopyable& operator=( const noncopyable& ) = delete;
  private:  // emphasize the following members are private
      noncopyable( const noncopyable& );
      noncopyable& operator=( const noncopyable& );

Modify Ticket

Change Properties
Set your email in Preferences
as closed The owner will remain viboes.
The resolution will be deleted.

Add Comment

E-mail address and name can be saved in the Preferences.

Note: See TracTickets for help on using tickets.