std::ranges::cdata
| ヘッダ <ranges>
|
||
| ヘッダ <iterator>
|
||
inline namespace /*unspecified*/ {
inline constexpr /*unspecified*/ cdata = /*unspecified*/;
}
|
(C++20以上) (カスタマイゼーションポイントオブジェクト) |
|
| 呼び出しシグネチャ |
||
template< class T >
requires /* see below */
constexpr /* see below */ cdata( T&& t );
|
(C++20以上) | |
const修飾された引数によって示される連続範囲の最初の要素(定数型の)(C++23以上)へのポインタを返します。const修飾された(C++23未満)引数。
|
戻り値の型は |
(C++23未満) |
|
引数が左辺値であるか、または
戻り値の型は それ以外のすべての場合、 |
(C++23以上) |
ranges::cdata(t) が有効であれば、オブジェクト(定数型の)(C++23以上)へのポインタを返します。
カスタマイゼーションポイントオブジェクト
名前
ranges::cdata
は
カスタマイゼーションポイントオブジェクト
を表し、これは
関数オブジェクト
のconstな
リテラル
semiregular
クラス型である。詳細は
CustomizationPointObject
を参照。
例
#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; }
出力:
Hello world!
関連項目
|
(C++20)
|
連続範囲の先頭へのポインタを取得する
(カスタマイゼーションポイントオブジェクト) |
|
(C++17)
|
基となる配列へのポインタを取得する
(関数テンプレート) |