초기 질문:
std::function이 왜 (또한 Boost::function 및 std::tr1::function에 적용 가능) 동등하지 않음?
답변:
비교 이유:
std::function은 다양한 호출 가능 유형을 수용하도록 설계되었습니다. 모든 호출 가능 유형에 동등 비교를 적용하는 것은 구현자에게 부담이 될 수 있습니다. 또한 구현하더라도 동등성 검사는 다르게 구성된 동등한 함수를 고려하지 않아 범위가 좁을 수 있습니다.
"유형 시스템에 가능한 구멍" 설명:
삭제 오버로드된 == 및 != 연산자는 사용을 완전히 금지하므로 암시적으로 함수를 비교하려고 하면 컴파일 시간 오류가 발생합니다. 이 접근 방식은 의도하지 않거나 문제가 있는 암시적 변환의 가능성을 제거합니다.
std::shared_ptr:
std::function과 달리 std::shared_ptr은 다음과 같은 장점이 있습니다. 평등 의미론을 정의했습니다. 두 개의 shared_ptr 인스턴스가 둘 다 비어 있거나 둘 다 비어 있지 않고 동일한 객체를 참조하는 경우 동일한 것으로 간주됩니다.
위 내용은 `std::function`, `boost::function` 및 `std::tr1::function`이 동등 비교 가능하지 않은 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!