std::ranges:: cdata
|
Definiert im Header
<ranges>
|
||
|
Definiert im Header
<iterator>
|
||
|
inline
namespace
/*unspecified*/
{
inline
constexpr
/*unspecified*/
cdata
=
/*unspecified*/
;
|
(seit C++20)
(Customization Point Object) |
|
|
Aufrufsignatur
|
||
|
template
<
class
T
>
requires
/* see below */
|
(seit C++20) | |
Gibt einen Zeiger auf das erste Element konstanten Typs (since C++23) eines zusammenhängenden Bereichs zurück, der durch ein const-qualifiziertes (until C++23) Argument bezeichnet wird.
|
Sei
Ein Aufruf von
Der Rückgabetyp entspricht std:: remove_reference_t < ranges:: range_reference_t < CT >> * . |
(bis C++23) |
|
Wenn das Argument ein Lvalue ist oder
ranges::
enable_borrowed_range
<
std::
remove_cv_t
<
T
>>
Der Rückgabetyp entspricht std:: remove_reference_t < ranges:: range_const_reference_t < T >> * .
In allen anderen Fällen ist ein Aufruf von
|
(seit C++23) |
Wenn ranges :: cdata ( t ) gültig ist, dann gibt es einen Zeiger auf ein Objekt konstanten Typs (seit C++23) zurück.
Customization Point Objects
Der Name
ranges::cdata
bezeichnet ein
Customization Point Object
, welches ein konstantes
Funktionsobjekt
eines
Literal
semiregular
-Klassentyps ist. Weitere Details finden Sie unter
CustomizationPointObject
.
Beispiel
#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; }
Ausgabe:
Hello world!
Siehe auch
|
(C++20)
|
erhält einen Zeiger auf den Anfang eines zusammenhängenden Bereichs
(Anpassungspunktobjekt) |
|
(C++17)
|
erhält den Zeiger auf das zugrundeliegende Array
(Funktionstemplate) |