C ++의 std :: function에 포함 된 람다 (캡처 중일 수 있음)를 고유하게 식별하는 방법

크리스

동일한 람다를 여러 번 추가하지 않도록 람다를 감싸는 객체 (캡처 또는 비 캡처 )를 보유 하기 위해 세트와 같은 컨테이너 (예 QSet: qt 또는 std::set) 를 사용하려고 계획했습니다 std::function. 그리고 이러한 클래스는 모두 키 유형에 대한 비교 또는 해시 계산 기능을 제공하는 사용자가 필요합니다.

그러나 내가 아는 한 기본 람다가 캡처하는 경우 target()메서드가 반환 nullptr되므로 std::function반환 값을 기준으로 두 개의를 비교할 수 없습니다.

그래서 두 개의 임의 std::function의를 어떻게 비교 하거나 적어도에서 고유 한 값을 계산할 수 std::function있습니까?

Mehno

모든 람다에는 고유 한 유형이 있으므로 목적에 맞게 target_type을 사용할 수 있습니다. 캡처하지 않는 람다 만 함수 ptr로 변환 할 수 있습니다. 컨텍스트에서 동일한 것이 무엇인지에 따라 두 함수가 동일한 지 여부를 비교하는 것은 쉬운 일이 아닙니다. "동일한"람다를 정의하는 코드에 여러 부분이있는 경우 여전히 다른 유형을 가질 수 있습니다.

auto l1 = [](){};
auto l2 = [](){};

l1과 l2는 다른 유형을 가지며 세트에 다른 항목을 작성합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

포인터에 캡처 된 매개 변수와 함께 람다를 저장하는 방법이 있습니다.

분류에서Dev

람다 함수 (람다 캡처 포함)를 std :: function 객체로 변환하는 템플릿

분류에서Dev

C 스타일 함수 포인터와 람다로 채워진 벡터를 만드는 방법 (캡처 유무)

분류에서Dev

값으로 캡처 된 함수 객체 인 방문자가있는 람다 내부에서 std :: visit을 호출하는 방법

분류에서Dev

Powershell, Select-String의 인수를 캡처하고 일치하는 출력에 포함하는 방법

분류에서Dev

오버로드 된 함수 모호성의 매개 변수로 람다 및 함수 포인터를 캡처하지 않음

분류에서Dev

함수 인수를 캡처하고 나중에 C ++ 11에서 실행하기 위해 함수 포인터를 저장하는 방법은 무엇입니까?

분류에서Dev

std :: future의 람다에서 참조로 캡처 된 값 수정

분류에서Dev

캡슐화 된 함수에서 Promise를 처리하는 방법

분류에서Dev

캡처 및 그룹 정규식에 포함 된 대괄호 안의 다른 문자에 대한 특정 범위를 설정하는 방법

분류에서Dev

캡처 된 unique_ptr로 람다를 반환하는 방법

분류에서Dev

C ++ 11 : 람다 함수에서 클래스 멤버를 캡처하려고 할 때`this`를 캡처 할 수 없습니다.

분류에서Dev

캡처 된 변수를 유지하면서 람다의 코드를 어떻게 변경합니까?

분류에서Dev

별도의 클래스 함수 C ++ 내에서 다른 모든 스레드를 일시 중단하는 방법

분류에서Dev

C ++ 20 내부의 매개 변수를 캡처하는 람다의 다른 선언에는 표현식이 필요합니다.

분류에서Dev

캡처하지 않고 람다의 변수에 decltype을 어떻게 사용할 수 있습니까?

분류에서Dev

람다 매개 변수 캡처에 템플릿 형식 정의를 사용하는 방법은 무엇입니까?

분류에서Dev

'std :: function'에 대한 포인터에 저장된 람다를 호출하는 방법은 무엇입니까?

분류에서Dev

다른 람다 함수에서 AWS 람다 함수를 호출하고 호출 된 람다 결과를 기다리지 않고 반환하는 방법

분류에서Dev

이 람다가 포인터의 복사본을 캡처 할 수있는 방법이 있습니까?

분류에서Dev

이미 정의 된 람다 함수를 취하고 람다 함수를 커버하는 함수를 모의하는 방법

분류에서Dev

루비에서 명명 된 캡처를 수행하는 방법

분류에서Dev

C ++ 람다 : Currying sum 함수 : 값별 캡처와 참조 별 캡처를 사용하여 다른 결과를 반환합니다.

분류에서Dev

C ++ 17의 변형에 포함 된 유형에 대한 무의미한 메서드를 처리하는 방법

분류에서Dev

C ++ 20 : 형식이 아닌 템플릿 매개 변수에서 람다를 캡처하지 않음

분류에서Dev

정규식 : 괄호 안에있는 모든 것을 캡처하고 중첩 된 괄호도 캡처합니다.

분류에서Dev

C ++ 람다-함수 매개 변수 캡처 방법

분류에서Dev

함수에 전달 된 여러 인수 (...)의 이름을 캡처하는 방법은 무엇입니까?

분류에서Dev

"*"를 bash 함수의 인수로 캡처하고 비교에 사용하는 방법

Related 관련 기사

  1. 1

    포인터에 캡처 된 매개 변수와 함께 람다를 저장하는 방법이 있습니다.

  2. 2

    람다 함수 (람다 캡처 포함)를 std :: function 객체로 변환하는 템플릿

  3. 3

    C 스타일 함수 포인터와 람다로 채워진 벡터를 만드는 방법 (캡처 유무)

  4. 4

    값으로 캡처 된 함수 객체 인 방문자가있는 람다 내부에서 std :: visit을 호출하는 방법

  5. 5

    Powershell, Select-String의 인수를 캡처하고 일치하는 출력에 포함하는 방법

  6. 6

    오버로드 된 함수 모호성의 매개 변수로 람다 및 함수 포인터를 캡처하지 않음

  7. 7

    함수 인수를 캡처하고 나중에 C ++ 11에서 실행하기 위해 함수 포인터를 저장하는 방법은 무엇입니까?

  8. 8

    std :: future의 람다에서 참조로 캡처 된 값 수정

  9. 9

    캡슐화 된 함수에서 Promise를 처리하는 방법

  10. 10

    캡처 및 그룹 정규식에 포함 된 대괄호 안의 다른 문자에 대한 특정 범위를 설정하는 방법

  11. 11

    캡처 된 unique_ptr로 람다를 반환하는 방법

  12. 12

    C ++ 11 : 람다 함수에서 클래스 멤버를 캡처하려고 할 때`this`를 캡처 할 수 없습니다.

  13. 13

    캡처 된 변수를 유지하면서 람다의 코드를 어떻게 변경합니까?

  14. 14

    별도의 클래스 함수 C ++ 내에서 다른 모든 스레드를 일시 중단하는 방법

  15. 15

    C ++ 20 내부의 매개 변수를 캡처하는 람다의 다른 선언에는 표현식이 필요합니다.

  16. 16

    캡처하지 않고 람다의 변수에 decltype을 어떻게 사용할 수 있습니까?

  17. 17

    람다 매개 변수 캡처에 템플릿 형식 정의를 사용하는 방법은 무엇입니까?

  18. 18

    'std :: function'에 대한 포인터에 저장된 람다를 호출하는 방법은 무엇입니까?

  19. 19

    다른 람다 함수에서 AWS 람다 함수를 호출하고 호출 된 람다 결과를 기다리지 않고 반환하는 방법

  20. 20

    이 람다가 포인터의 복사본을 캡처 할 수있는 방법이 있습니까?

  21. 21

    이미 정의 된 람다 함수를 취하고 람다 함수를 커버하는 함수를 모의하는 방법

  22. 22

    루비에서 명명 된 캡처를 수행하는 방법

  23. 23

    C ++ 람다 : Currying sum 함수 : 값별 캡처와 참조 별 캡처를 사용하여 다른 결과를 반환합니다.

  24. 24

    C ++ 17의 변형에 포함 된 유형에 대한 무의미한 메서드를 처리하는 방법

  25. 25

    C ++ 20 : 형식이 아닌 템플릿 매개 변수에서 람다를 캡처하지 않음

  26. 26

    정규식 : 괄호 안에있는 모든 것을 캡처하고 중첩 된 괄호도 캡처합니다.

  27. 27

    C ++ 람다-함수 매개 변수 캡처 방법

  28. 28

    함수에 전달 된 여러 인수 (...)의 이름을 캡처하는 방법은 무엇입니까?

  29. 29

    "*"를 bash 함수의 인수로 캡처하고 비교에 사용하는 방법

뜨겁다태그

보관