빠른 질문하십시오 std::string
를 만들기위한 문자 정의되지 않은 C++ (11) 제안에 "사용자 -"(정말, 표준 라이브러리)과 같은std :: string에 대한 표준 정의 리터럴 접미사가없는 이유는 무엇입니까?
auto str = "hello world"s; // str is a std::string
처럼 C++를 수행하는 이유, 오브젝티브 C가 모두 지원 C 스타일 문자열 및보다 사용자에게 친숙한 라이브러리 유형 NSString
; 그러나 C++과 달리 두 사람 사이에 혼동을 느끼는 사람은 아무도 없습니다. @
이라는 문자열 리터럴 접두사를 사용하여 NSString
을 만드는 것이 쉽지 않기 때문에 아무도 혼동하지 않습니다. 실제로, 문자가이 아니고 Objective-C 코드가 @
인 경우는 거의 없습니다. 모두가 그 방법을 알고 있으며, NSString
을 사용하고 있습니다.
C++ 11 사용자 정의 리터럴이 이것을 허용 할 것이며 사실 Stroustrup의 C++ 11 FAQ의 UDL 섹션에서이 예제를 정확하게 사용합니다. 게다가 앞에 밑줄이없는 UDL은 예약되어 있으므로 위와 같이 일반 s
을 허용해도 아무런 문제가 없습니다. 다른 것과 충돌 할 가능성은 없습니다.
아마도 나는 뭔가를 놓치고 있습니다. 그러나 이것은 언어에 매우 가치 있고 위험 부담이없는 것처럼 보입니다. 그래서 C++ 11이 왜 그것을 제공하지 않는지 알 수 있습니까? C++ 14에 나타날 가능성이 있습니까?
글쎄, 우리는 몇 초 만에 완벽한 답을 찾는다. +1 (가능하다면 그 이상). 이상한 것은 원래의 UDL 제안의 일부가 아니지만 거기에 우리가 간다. 나는 마침내 (잘하면) C++ 14에서'char *'의 저주를 잃어버린 것을 고대합니다! –
특히 auto와 조합하여 이것을 사용하고 싶습니다. – Excelcius
@Excelcius : "auto"(적어도 IMO 이상)보다 더 중요한 것은 문자열을 함께 추가하는 것입니다 :' "A"+ "B" 예를 들면. –