사용자 정의 문자열 리터럴 변환 연산자를 정의 할 수 있습니까? 그 결과의 유형은 문자열 입력 값에 따라 다릅니 까?종속 유형이있는 문자열 리터럴 - 불가능합니까?
사용자 정의 정수 및 부동 소수점 리터럴은 리터럴 연산자 템플릿을 허용하기 때문에 쉽고 리터럴의 실제 문자는 템플릿 인수로 전달되기 때문에 쉽게 정의 할 수 있습니다. 예 :
template <char... s> struct silly { using type = int; };
template <char... s> struct silly<'1', s...> { using type = double; };
template <char... s>
typename silly<s...>::type operator"" _silly() { return 0; }
static_assert(std::is_same<int, decltype(4321_silly)>::value, "no luck");
static_assert(std::is_same<double, decltype(1234_silly)>::value, "no luck");
사용자 정의 문자열 리터럴에는 이러한 사항이 존재하지 않습니다.
현재 표준에서 또는 향후 개정판에 대해 계획되었거나 논의 된 다른 방법이 있을까요?
이 템플릿 인수 문제에 대해 알지 못했습니다. 그리고 그것은 아주 멋집니다. – Quentin
우리가''문자열 리터럴을위한 UDL 연산자를 얻지 못하면 불가능합니다 : ( –
Xeo
새로운 표준의 많은 부분이 불완전하고 비 직교 해 보입니다. * 한숨 *. 아마도 5 ~ 10 년 후에 수정 될 것입니다. – Mankarse