std::function 템플릿 인수 서명의 모호성
두 함수
이를 설명하려면 다음 클래스를 고려하세요.
<code class="cpp">template<class Signature> class myfunc{ public: template<class Func> myfunc(Func a_func){ // ... } };</code>
컴파일러는 오버로드 세트에 대해 실행 가능한 함수를 찾으려고 시도할 때 잠재적인 변환을 검색합니다. 이 경우 myfunc의 두 생성자는 무엇이든 허용하므로 int(*)()에서 myfunc
따라서 a(x) 또는 a(y)를 호출할 때 컴파일러는 두 개의 실행 가능한 함수를 만나 모호성을 초래합니다.
해결 방법
std::function의 템플릿 인수 서명은 함수를 선언하고 정의할 때 해당 유형의 일부입니다. 그러나 객체 생성 중에는 서명이 무시됩니다.
모호함을 피하기 위해 다음을 수행할 수 있습니다.
위 내용은 `std::function`이 템플릿 인수 서명의 모호성을 초래하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!