>백엔드 개발 >C++ >C 11에서 Copy-on-Write std::string 구현이 합법적인가요?

C 11에서 Copy-on-Write std::string 구현이 합법적인가요?

Barbara Streisand
Barbara Streisand원래의
2024-12-20 00:43:09893검색

Is a Copy-on-Write std::string Implementation Legal in C  11?

C 11에서 COW(기록 중 복사) std::string 구현의 합법성

COW가 C 11에서 표준을 준수하는 std::string을 구현하기 위한 실행 가능한 기술이 아니기 때문에 최근 논의로 인해 불확실성이 높아졌습니다. 다음은 새로운 표준을 기반으로 이 가정의 타당성을 살펴봅니다.

C 11의 COW 기반 std::string 구현 금지

C 11은 COW를 명시적으로 금지합니다. std::string의 기반 구현. 이 제한 사항은 특정 상황에서만 반복자/참조의 무효화를 허용하는 표준의 섹션 21.4.1 p6에 명시되어 있습니다.

  • 비 참조에 대한 참조를 허용하는 표준 라이브러리 함수에 대한 인수 -const basic_string.
  • 연산자[]를 제외하고 const가 아닌 멤버 함수 호출, at, front, back, start, rbegin, end, rend.

COW 문자열에서 상수가 아닌 연산자[]를 호출하려면 앞서 언급한 단락에서 금지된 복사본을 만들어야 합니다(참조 무효화). 결과적으로 이러한 제약으로 인해 C 11에서는 COW 문자열이 금지됩니다.

위 내용은 C 11에서 Copy-on-Write std::string 구현이 합법적인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.