>  기사  >  백엔드 개발  >  `std::function` 객체가 동일한지 비교할 수 없는 이유는 무엇입니까?

`std::function` 객체가 동일한지 비교할 수 없는 이유는 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-30 15:55:03828검색

Why Can't I Compare `std::function` Objects for Equality?

std::function의 비동등성 비교 뒤에 숨겨진 수수께끼

std::function은 임의 호출 가능 객체를 캡슐화하여 동일성 비교에 대한 고유한 과제를 제시합니다. 이러한 비교를 구현하려면 모든 호출 가능 유형에 대한 동등 비교가 필요하며 이는 구현자에게 상당한 부담을 줍니다. 더욱이 동일한 기능은 서로 다른 인수 바인딩 순서에 따라 동일하지 않은 비교를 생성할 수 있습니다. 따라서 모든 경우에 동등성을 보장하는 불가능한 작업은 동등 비교성을 금지합니다.

C 11 초안에 언급된 "유형 시스템의 가능한 구멍"은 암시적 변환에 내재된 모호성을 의미하는 것 같습니다. 항등 연산자를 삭제하고 명시적 사용을 강제하면 해당 호출에서 생성된 유효한 코드가 없게 됩니다.

std::function과 달리 std::shared_ptr은 명확하게 정의된 항등 의미 체계를 갖습니다. 두 포인터가 모두 비어 있거나 둘 다 동일한 개체를 참조하는 경우 정확하게 동일합니다. 이러한 잘 정의된 동작을 통해 간단하고 의미 있는 동등 비교가 가능해졌습니다.

위 내용은 `std::function` 객체가 동일한지 비교할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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