"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > `std::ional`에 참조 유형 전문화가 부족한 이유는 무엇입니까?

`std::ional`에 참조 유형 전문화가 부족한 이유는 무엇입니까?

2024-11-08에 게시됨
검색:680

Why Does `std::optional` Lack Reference Type Specializations?

질문: std::ional에서 참조 유형 전문화의 부재 탐색

표준 C에서 std::ional은 다음을 수행하는 컨테이너를 제공합니다. 값을 보유하거나 값이 없음을 나타냅니다. 그러나 Boost와는 달리 std::ional은 참조 유형에 대한 전문화가 부족하여 사용자에게 '왜?'라는 질문을 남깁니다. 이 문서에서는 이러한 디자인 결정의 이유를 자세히 살펴보고 선택적 값에 대한 참조를 처리하기 위해 표준 라이브러리에서 사용할 수 있는 대체 옵션을 살펴봅니다.

답변: 우려 사항 및 향후 전망 해결

옵션 값에 대한 초기 제안(n3406)에서 위원회 구성원은 옵션 참조에 관해 우려를 제기했습니다. 이후 n3527에서 저자는 선택적 값의 채택 가능성을 높이기 위해 선택적 참조를 보조 제안으로 분리할 것을 제안했습니다.

선택적 참조는 다른 요인으로 인해 C 14에 포함되지 않았지만 C 14에서는 거부되지 않았습니다. 위원회. 이는 제안이 제출되면 향후 C 표준에 선택적 참조를 통합할 가능성을 열어줍니다.

선택적 값 참조를 위한 대안

표준이 없더라도:: 참조 유형에 대한 선택적 전문화를 통해 표준 라이브러리는 선택적 값을 참조하기 위한 대안을 제공합니다:

  • std::reference_wrapper<:ional>>: 이를 통해 다음을 수행할 수 있습니다. 선택적 값에 대한 참조를 생성하여 선택적 값에 대한 변경 사항이 참조에 반영되도록 합니다. 그러나 참조가 상수 참조(예: std::cref로 초기화됨)인 경우 선택적 값은 불변으로 유지된다는 점에 유의하는 것이 중요합니다.

결론적으로 참조 유형 전문화가 부족합니다. std::Optional은 제안 과정 중 우려로 인해 발생했습니다. 그러나 위원회는 향후 선택적 참조를 고려할 가능성이 있습니다. 또한 표준 라이브러리는 임시로 선택적 값을 참조하기 위한 대안으로 std::reference_wrapper<:ional>>을 제공합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3