std::ranges::cdata
| Definido en el encabezado <ranges>
|
||
| Definido en el encabezado <iterator>
|
||
inline namespace /*unspecified*/ {
inline constexpr /*unspecified*/ cdata = /*unspecified*/;
}
|
(desde C++20) (objeto de punto de personalización) |
|
| Firma de llamada |
||
template< class T >
requires /* see below */
constexpr /* see below */ cdata( T&& t );
|
(desde C++20) | |
Devuelve un puntero al primer elemento de tipo constante(desde C++23) de un rango contiguo denotado por un argumento calificado como const(hasta C++23).
|
Sea
Una llamada a El tipo de retorno es equivalente a |
(hasta C++23) |
|
Si el argumento es un lvalue o
El tipo de retorno es equivalente a En todos los demás casos, una llamada a |
(desde C++23) |
Si ranges::cdata(t) es válido, entonces devuelve un puntero a un objeto de tipo constante(desde C++23).
Objetos de punto de personalización
El nombre
ranges::cdata
denota un
objeto de punto de personalización
, que es un
objeto función
constante de un tipo de clase
literal
semiregular
. Consulte
CustomizationPointObject
para más detalles.
Ejemplo
#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; }
Salida:
Hello world!
Véase también
|
(C++20)
|
obtiene un puntero al inicio de un rango contiguo
(objeto de punto de personalización) |
|
(C++17)
|
obtiene el puntero al array subyacente
(plantilla de función) |