std::ranges:: cdata
|
헤더에 정의됨
<ranges>
|
||
|
헤더에 정의됨
<iterator>
|
||
|
inline
namespace
/*unspecified*/
{
inline
constexpr
/*unspecified*/
cdata
=
/*unspecified*/
;
|
(C++20 이후)
(커스터마이제이션 포인트 객체) |
|
|
호출 시그니처
|
||
|
template
<
class
T
>
requires
/* see below */
|
(C++20 이후) | |
연속 범위의 첫 번째 요소에 대한 포인터를 반환합니다. 상수 타입 (C++23부터) , const 한정된 (C++23 이전) 인수로 표시된.
|
반환 타입은 std:: remove_reference_t < ranges:: range_reference_t < CT >> * 와 동등하다. |
(C++23 이전) |
|
인수가 lvalue이거나
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'; // 오류, src.data()는 읽기 전용으로 처리됨 std::ranges::data(src)[0] = 'H'; // 정상, src.data()는 비상수 저장소임 char dst[20]; // C 스타일 문자열을 위한 저장소 std::strcpy(dst, std::ranges::cdata(src)); // [data(src), data(src) + size(src)]는 NTBS임이 보장됨 std::cout << dst; }
출력:
Hello world!
참고 항목
|
(C++20)
|
연속 범위의 시작 부분에 대한 포인터를 획득
(커스터마이제이션 포인트 객체) |
|
(C++17)
|
기반 배열에 대한 포인터를 획득
(함수 템플릿) |