std::ranges::cdata
| Definiert in Header <ranges>
|
||
| Definiert in Header <iterator>
|
||
inline namespace /*unspecified*/ {
inline constexpr /*unspecified*/ cdata = /*unspecified*/;
}
|
(seit C++20) (Anpassungspunktobjekt) |
|
| Aufrufsignatur |
||
template< class T >
requires /* see below */
constexpr /* see below */ cdata( T&& t );
|
(seit C++20) | |
Gibt einen Zeiger auf das erste Element konstanten Typs(seit C++23) eines zusammenhängenden Bereichs zurück, der durch ein const-qualifiziertes(bis C++23) Argument bezeichnet wird.
|
Sei
Ein Aufruf von Der Rückgabetyp ist äquivalent zu |
(bis C++23) |
|
Wenn das Argument ein Lvalue ist oder
Der Rückgabetyp ist äquivalent zu 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) |