2596. vector::data() should use addressof

Section: 23.3.11.4 [vector.data] Status: C++17 Submitter: Marshall Clow Opened: 2016-02-29 Last modified: 2017-07-30

Priority: 0

View all other issues in [vector.data].

View all issues with C++17 status.

Discussion:

In 23.3.11.4 [vector.data], we have:

Returns: A pointer such that [data(),data() + size()) is a valid range. For a non-empty vector, data() == &front().

This should be:

Returns: A pointer such that [data(),data() + size()) is a valid range. For a non-empty vector, data() == addressof(front()).

Proposed resolution:

This wording is relative to N4582.

  1. Change 23.3.11.4 [vector.data] p1 as indicated:

    T* data() noexcept;
    const T* data() const noexcept;
    

    -1- Returns: A pointer such that [data(), data() + size()) is a valid range. For a non-empty vector, data() == addressof(&front()).