[[[C++ 표준 라이브러리에서 제공하는 사용자 정의 리터럴 접미사]]]
문자열 리터럴
const char* str을 스트링 객체로 만들었다.
따라서 문자열 합치기가 된다.
string 객체가 존재해야 +operator을 호출하여 문자열을 합칠 수 있다.
[[[직접 만들어 보자]]]
1. constexpr 키워드가 사용된 operator "" _s함수는 사용자 정의 리터럴 접미사를 정의한다.
2. const char* 뿐만 아니라 size 인자로 받는다.
부동 소수점을 int로 변환시키는 사용자 정의 리터럴 접미사를 만들어 보려고 했다.
1. 만들 수 없는 이유는 constexpr 함수는 컴파일 시점에서 호출되는데 float는 런타임 때 메모리에 저장되기 때문이다.
따라서 컴파일 시간에 평가할 수 있는 정수, 문자열 타입의 인자를 받아서 처리한다.
2. 따라서 C++은 부동 소수점을 인자로 받는 사용자 정의 리터럴 접미사를 지원하지 않는다.
3. 대신 표준 라이브러리가 제공하는 리터럴 접미사 f를 사용하면 된다.
이것도 안된다. unsigned long long을 인자로 받아야 한다고 에러메시지가 나온다.
대신 ll 접미사를 사용하면 된다.
[[결론]]
접미사를 처음 만들어봐서 재밌긴 한데 이걸 유용하게 사용할지는 모르겠다. 제한 사항이 너무 많다.
문자열을 string으로 바꾸고 싶다면 _s를 접미사로 사용하면 되고, f로 바꾸고 싶다면 f를 접미사로 사용하고 long long은 ll, long double은 l, double은 아무 접미사를 안붙이면 된다.
원래 알던 접미사들이다.
'---C++ 역량 강화--- > STL 공부' 카테고리의 다른 글
concept을 이용한 my_distance 구현 (0) | 2024.06.11 |
---|---|
[c++20] ranges, view (0) | 2024.06.07 |
[c++20] concept (0) | 2024.06.06 |
템플릿 메타프로그래밍 (0) | 2024.06.06 |
distance (0) | 2024.06.04 |