std::ranges::cdata
| Défini dans l'en-tête <ranges>
|
||
| Défini dans l'en-tête <iterator>
|
||
inline namespace /*unspecified*/ {
inline constexpr /*unspecified*/ cdata = /*unspecified*/;
}
|
(depuis C++20) (point de personnalisation objet) |
|
| Signature d'appel |
||
template< class T >
requires /* see below */
constexpr /* see below */ cdata( T&& t );
|
(depuis C++20) | |
Retourne un pointeur vers le premier élément de type constant(depuis C++23) d'une plage contiguë désignée par un argument qualifié const(jusqu'à C++23).
|
Soit
Un appel à Le type de retour est équivalent à |
(jusqu'à C++23) |
|
Si l'argument est une lvalue ou
Le type de retour est équivalent à Dans tous les autres cas, un appel à |
(depuis C++23) |
Si ranges::cdata(t) est valide, alors elle retourne un pointeur vers un objet de type constant(depuis C++23).
Objets de point de personnalisation
Le nom
ranges::cdata
désigne un
objet de point de personnalisation
, qui est un
objet fonction
constant d'un type de classe
littéral
semiregular
. Voir
CustomizationPointObject
pour plus de détails.
Exemple
#include <cstring> #include <iostream> #include <ranges> #include <string> int main() { std::string src {"hello world!\n"}; // std::ranges::cdata(src)[0] = 'H'; // error, src.data() is treated as read-only std::ranges::data(src)[0] = 'H'; // OK, src.data() is a non-const storage char dst[20]; // storage for a C-style string std::strcpy(dst, std::ranges::cdata(src)); // [data(src), data(src) + size(src)] is guaranteed to be an NTBS std::cout << dst; }
Sortie :
Hello world!
Voir aussi
|
(C++20)
|
obtient un pointeur vers le début d'une plage contiguë
(objet de point de personnalisation) |
|
(C++17)
|
obtient le pointeur vers le tableau sous-jacent
(modèle de fonction) |