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부터) | |
연속 범위의 첫 번째 요소에 대한 포인터를 반환합니다. 상수 타입의(C++23부터) (C++20까지는) const 한정(C++23까지) 인자로 지정된.
|
반환 타입은 |
(C++23까지) |
|
인자가 lvalue이거나
반환 타입은 그 외 모든 경우, |
(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)
|
기반 배열에 대한 포인터를 획득
(함수 템플릿) |