std::ranges:: cdata
|
ヘッダーで定義
<ranges>
|
||
|
ヘッダーで定義
<iterator>
|
||
|
inline
namespace
/*unspecified*/
{
inline
constexpr
/*unspecified*/
cdata
=
/*unspecified*/
;
|
(C++20以降)
(カスタマイゼーションポイントオブジェクト) |
|
|
呼び出しシグネチャ
|
||
|
template
<
class
T
>
requires
/* 下記参照 */
|
(C++20以降) | |
連続した範囲の先頭要素へのポインタを返す。 定数型 (C++23以降) で示される範囲は、 const修飾された (C++23以前) 引数によって指定される。
|
戻り値の型は std:: remove_reference_t < ranges:: range_reference_t < CT >> * と等価である。 |
(C++23まで) |
|
引数が左辺値、または
ranges::
enable_borrowed_range
<
std::
remove_cv_t
<
T
>>
が
true
の場合、
戻り値の型は std:: remove_reference_t < ranges:: range_const_reference_t < T >> * と同等です。
それ以外の場合、
|
(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)
|
基となる配列へのポインタを取得する
(関数テンプレート) |