This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of C++14 status.

2324. Insert iterator constructors should use addressof()

Section: 99 [back.insert.iter.cons], 99 [front.insert.iter.cons], 99 [insert.iter.cons] Status: C++14 Submitter: Stephan T. Lavavej Opened: 2013-09-21 Last modified: 2017-07-06

Priority: 0

View all issues with C++14 status.

Discussion:

99 [back.insert.iter.cons]/1, 99 [front.insert.iter.cons]/1, and 99 [insert.iter.cons]/1 say "Initializes container with &x", which doesn't defend against containers overloading operator&(). Containers are now required to have such defenses for their elements, so we may as well be consistent here.

[Issaquah 2014-02-11: Move to Immediate]

Proposed resolution:

This wording is relative to N3691.

  1. Edit 99 [back.insert.iter.cons]/1 as indicated:

    explicit back_insert_iterator(Container& x);
    

    -1- Effects: Initializes container with &xstd::addressof(x).

  2. Edit 99 [front.insert.iter.cons]/1 as indicated:

    explicit front_insert_iterator(Container& x);
    

    -1- Effects: Initializes container with &xstd::addressof(x).

  3. Edit 99 [insert.iter.cons]/1 as indicated:

    insert_iterator(Container& x, typename Container::iterator i);
    

    -1- Effects: Initializes container with &xstd::addressof(x) and iter with i.