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)
(objet de point de personnalisation) |
|
|
Signature d'appel
|
||
|
template
<
class
T
>
requires
/* see below */
|
(depuis C++20) | |
Retourne un pointeur vers le premier élément de type constant (depuis C++23) d'une plage contiguë dénotée par un argument qualifié const (jusqu'à C++23) .
|
Soit
Un appel à
Le type de retour est équivalent à std:: remove_reference_t < ranges:: range_reference_t < CT >> * . |
(jusqu'à C++23) |
|
Si l'argument est une lvalue ou si
ranges::
enable_borrowed_range
<
std::
remove_cv_t
<
T
>>
est
true
, alors un appel à
Le type de retour est équivalent à std:: remove_reference_t < ranges:: range_const_reference_t < T >> * .
Dans tous les autres cas, un appel à
|
(depuis C++23) |
Si ranges :: cdata ( t ) est valide, alors il 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) |