std::data - cppreference.com

##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::data

From cppreference.com
< cpp‎ | iterator

Defined in header `<iterator>` |  |
Defined in header `<array>` |  |
Defined in header `<deque>` |  |
Defined in header `<forward_list>` |  |
Defined in header `<list>` |  |
Defined in header `<map>` |  |
Defined in header `<regex>` |  |
Defined in header `<set>` |  |
Defined in header `<string>` |  |
Defined in header `<unordered_map>` |  |
Defined in header `<unordered_set>` |  |
Defined in header `<vector>` |  |
template <class C> constexpr auto data(C& c) -> decltype(c.data()); | (1) | (since C++17)
template <class C> constexpr auto data(const C& c) -> decltype(c.data()); | (2) | (since C++17)
template <class T, std::size_t N> constexpr T* data(T (&array)[N]) noexcept; | (3) | (since C++17)
template <class E> constexpr const E* data(std::initializer_list<E> il) noexcept; | (4) | (since C++17)

Returns a pointer to the block of memory containing the elements of the container.

1,2) returns c.data()
3) returns array
4) returns il.begin()

### [edit] Parameters

c | - | a container with a data() method
array | - | an array of arbitrary type
il | - | an initializer list

### [edit] Return value

A pointer to the block of memory containing the elements of the container.

### [edit] Exceptions

3,4)
`noexcept` specification:
noexcept

### [edit] Possible implementation

First version
    template <class C>
    constexpr auto data(C& c) -> decltype(c.data())
    {
        return c.data();
    }
Second version
    template <class C>
    constexpr auto data(const C& c) -> decltype(c.data())
    {
        return c.data();
    }
Third version
    template <class T, std::size_t N>
    constexpr T* data(T (&array)[N]) noexcept
    {
        return array;
    }
Fourth version
    template <class E>
    constexpr const E* data(std::initializer_list<E> il) noexcept
    {
        return il.begin();
    }

### [edit] Example

| This section is incomplete Reason: no example

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/iterator/data&oldid=81916"
Categories:

- unconditionally noexcept
- Todo no example