상수 표현식에서 std::string 활용
Constexpr 변수는 최신 C의 중요한 구성 요소로, 복잡한 표현식에 대한 컴파일 시간 해결 방법을 제공합니다. . 그러나 엄격한 요구 사항으로 인해 constexpr 컨텍스트에서 std::string을 사용하는 것은 역사적으로 문제가 있었습니다.
C 11에서는 제공된 코드 조각에 예시된 것처럼 상수 std::string을 정의하려고 시도합니다. 컴파일 오류가 발생했습니다. 설명은 리터럴 유형으로 간주되는 것을 방지하는 std::string의 중요한 소멸자에 있습니다.
C 20 및 C 17 솔루션
다행히도 , C 20은 이러한 딜레마에 대한 해결책을 제시했습니다. 상수 평가가 끝나기 전에 std::string이 파기될 것이 확실하다면 constexpr 내에서 사용하는 것이 유효해집니다. 원래 쿼리의 예는 유효하지 않지만 상수가 아닌 문자열 리터럴(답변에 설명된 대로)에서 생성된 std::string의 크기를 결정하는 것과 같은 코드는 성공적으로 컴파일됩니다.
C 외에도 20의 향상된 기능인 C 17에서는 std::string_view가 탄생했습니다. 이 문자열 같은 객체는 기존 문자 시퀀스를 소유하거나 수정하지 않고도 해당 시퀀스에 대한 불변 참조를 제공합니다. 답변에서 설명한 대로 constexpr std::string_view를 정의하면 상수 표현식에서 문자열을 사용하는 문제가 해결됩니다.
이러한 솔루션을 통해 C 20과 C 17은 모두 constexpr의 표현력과 성능을 크게 향상시킵니다. 최신 C 프로그래밍.
위 내용은 상수 표현식에 std::string을 사용할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!