Title
Allocator requirements should include CopyConstructible
Status
c++14
Section
[allocator.requirements]
Submitter
Jonathan Wakely

Created on 2011-08-30.00:00:00 last changed 131 months ago

Messages

Date: 2012-11-03.04:16:46

Proposed resolution:

This wording is relative to the FDIS.

  1. Change Table 28 — Allocator requirements in [allocator.requirements]:

    Table 28 — Allocator requirements
    Expression Return type Assertion/note pre-/post-condition Default
    X a1(a);
    X a1 = a;
    Shall not exit via an exception.
    post: a1 == a
    X a1(move(a));
    X a1 = move(a);
    Shall not exit via an exception.
    post: a1 equals the prior value
    of a.
  2. Change [allocator.requirements] paragraph 4:

    An allocator type X shall satisfy the requirements of CopyConstructible ([utility.arg.requirements]). The X::pointer, X::const_pointer, X::void_pointer, and X::const_void_pointer types shall satisfy the requirements of NullablePointer ([nullablepointer.requirements]). No constructor, comparison operator, copy operation, move operation, or swap operation on these types shall exit via an exception. X::pointer and X::const_pointer shall also satisfy the requirements for a random access iterator ([iterator.requirements]).

Date: 2012-11-03.04:16:46

[ 2012, Portland: applied to WP ]

Date: 2012-02-27.16:24:02

[ 2012, Kona ]

Move to Ready.

Date: 2011-08-30.00:00:00

As discussed in c++std-lib-31054 and c++std-lib-31059, the Allocator requirements implicitly require CopyConstructible because a.select_on_container_copy_construction() and container.get_allocator() both return a copy by value, but the requirement is not stated explicitly anywhere.

In order to clarify that allocators cannot have 'explicit' copy constructors, the requirements should include CopyConstructible.

History
Date User Action Args
2014-02-20 13:20:35adminsetstatus: wp -> c++14
2012-11-03 04:16:46adminsetmessages: + msg6266
2012-10-25 12:46:45adminsetstatus: voting -> wp
2012-10-16 15:35:12adminsetstatus: ready -> voting
2012-02-27 16:24:02adminsetmessages: + msg6020
2012-02-12 18:36:43adminsetstatus: new -> ready
2011-11-24 21:01:35adminsetmessages: + msg5896
2011-08-30 00:00:00admincreate