FreeBSD Manual Pages
std::data(3) C++ Standard Libary std::data(3) NAME std::data - std::data Synopsis Defined in header <array> Defined in header <deque> Defined in header <forward_list> Defined in header <iterator> Defined in header <list> Defined in header <map> Defined in header <regex> Defined in header <set> Defined in header <span> (since C++20) Defined in header <string> Defined in header <string_view> Defined in header <unordered_map> Defined in header <unordered_set> Defined in header <vector> template <class C> (1) (since C++17) constexpr auto data(C& c) -> decltype(c.data()); template <class C> (2) (since C++17) constexpr auto data(const C& c) -> decltype(c.data()); template <class T, std::size_t N> (3) (since C++17) constexpr T* data(T (&array)[N]) noexcept; template <class E> (4) (since C++17) constexpr const E* data(std::initializer_list<E> il) noexcept; Returns a pointer to the block of memory containing the elements of the range. 1,2) returns c.data() 3) returns array 4) returns il.begin() Parameters c - a container or view with a data() member function array - an array of arbitrary type il - an initializer list Return value A pointer to the block of memory containing the elements of the range. Exceptions 1) May throw implementation-defined exceptions. Notes The overload for std::initializer_list is necessary because it does not have a member function data. Feature-test macro: __cpp_lib_nonmember_container_access 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 // Run this code #include <string> #include <cstring> #include <iostream> int main() { std::string s {"Hello world!\n"}; char a[20]; // storage for a C-style string std::strcpy(a, std::data(s)); // [s.data(), s.data() + s.size()] is guaranteed to be an NTBS since C++11 std::cout << a; } Output: Hello world! See also ranges::data obtains a pointer to the beginning of a contiguous range (C++20) (customization point object) ranges::cdata obtains a pointer to the beginning of a read-only con- tiguous range (C++20) (customization point object) http://cppreference.com 2022.07.31 std::data(3)
NAME | Synopsis | Parameters | Return value | Exceptions | Notes | Possible implementation | First version | Second version | Example | Output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::data&sektion=3&manpath=FreeBSD+Ports+15.0>
