# std::data

From cppreference.com
< cpp‎ | iterator

Defined in header `<iterator>` |  |
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()

### Parameters

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

### Return value

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

### Exceptions

3,4)
`noexcept` specification:
noexcept

### Notes

In addition to being included in `<iterator>`, `std::data` is guaranteed to become available if any of the following headers are included: `<array>`, `<deque>`, `<forward_list>`, `<list>`, `<map>`, `<regex>`, `<set>`, `<string>`, `<unordered_map>`, `<unordered_set>`, and `<vector>`.

### 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();
    }

### Example

| This section is incomplete Reason: no example

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

- unconditionally noexcept
- Todo no example

Hidden categories:

- Pages with unreviewed unconditional noexcept template
- Pages with unreviewed noexcept template