함수가 구조체 템플릿을 반환 할 때 템플릿 인수를 추론 할 수없는 이유

최준

요소와 크기의 반복 가능한 컨테이너를 수용하는 CreateBST 함수를 오버로드하려고합니다. 코드는 다음과 같습니다.

#include <iostream>
#include <vector>

template <typename ElementType>
struct BTreeNode
{
    ElementType value;
    BTreeNode<ElementType>* left;
    BTreeNode<ElementType>* right;
};

template <typename ContainerType, typename ElementType>
BTreeNode<ElementType>* CreateBST(const ContainerType& elements, const size_t num_elements);

int main()
{
    std::vector<int> elems{ 67, 34, 82, 12, 45, 78 };
    
    BTreeNode<int>* btree = CreateBST(elems, elems.size());
}

다음 컴파일러 오류가 발생합니다.

error C2672: 'CreateBST': no matching overloaded function found
error C2783: 'BTreeNode<ElementType> *CreateBST(const ContainerType &,const size_t)': could not deduce template argument for 'ElementType'

누군가가이 오류가 발생하는 이유를 설명 할 수 있습니까? 또한 std :: vector 및 요소 유형과 같은 템플릿 템플릿 매개 변수를 사용하는 함수를 어떻게 선언해야합니까?

Cigien

누군가가이 오류가 발생하는 이유를 설명 할 수 있습니까?

템플릿 매개 변수는 호출 사이트의 인수에서만 추론 할 수 있습니다. 그 정보, 즉 ElementType실제로 첫 번째 인수의 유형에 존재 하지만 템플릿은 해당 유형을 추출하는 방법을 모릅니다.


std :: vector 및 요소 유형과 같은 템플릿 템플릿 매개 변수를 사용하는 함수를 어떻게 선언해야합니까?

이렇게 :

template <template <typename...> class ContainerType, 
          typename ElementType>
BTreeNode<ElementType>* CreateBST(const ContainerType<ElementType>& elements, 
                                  const size_t num_elements);

첫 번째 템플릿 매개 변수는 템플릿 템플릿 매개 변수입니다. 이를 통해를 전달 하고 유형 vector<int>int일부를 추론 할 수 있습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

'가변 템플릿을 구문 분석 할 때'T '에 대한 템플릿 인수를 추론 할 수 없습니다.

분류에서Dev

이 함수 템플릿을 전문화 할 때 템플릿 인수를 생략 할 수 없습니다.

분류에서Dev

이 함수에 대한 템플릿 인수를 추론 할 수없는 이유는 무엇입니까?

분류에서Dev

함수 템플릿에서 반환 유형의 템플릿 인수 추론

분류에서Dev

g ++는 기능 맵 구현을위한 템플릿 유형을 추론 할 수 없습니다.

분류에서Dev

C ++ : "<>"를 사용할 때만 추론되는 기본 템플릿 인수

분류에서Dev

템플릿 클래스 멤버의 유형을 추론 할 수 없습니다.

분류에서Dev

내 템플릿 기능을 인라인 할 수없는 이유

분류에서Dev

컴파일러가 함수 인수에서 템플릿 값을 추론 할 수없는 이유는 무엇입니까?

분류에서Dev

C ++는 추론 할 수없는 템플릿 유형 만 제공합니다.

분류에서Dev

std :: forward가 스스로 템플릿 매개 변수를 추론 할 수없는 이유는 무엇입니까?

분류에서Dev

이러한 템플릿 인수를 추론 할 수 있습니까?

분류에서Dev

std :: async를 사용할 때 C ++ "템플릿 인수를 추론 할 수 없습니다"

분류에서Dev

Eigen 2 라이브러리에서 linearRegression을 사용할 때 템플릿 인수 추론 / 대체가 실패했습니다.

분류에서Dev

템플릿 함수 왜 "cin"을 추가 할 수 없습니까?

분류에서Dev

컴파일러가 가변 템플릿에 대한 템플릿 인수를 추론 할 수 없습니다.

분류에서Dev

템플릿 매개 변수를 추론 할 수 없습니다.

분류에서Dev

함수 템플릿을 인스턴스화 할 때 템플릿 유형 인수를 생략하는 것이 합법적입니까?

분류에서Dev

사용자 지정 템플릿에서 생성 할 때 반응 앱 템플릿 모듈을 찾을 수 없음

분류에서Dev

템플릿 클래스 내부의 템플릿 반복기, clang은 템플릿 매개 변수를 추론 할 수 없습니다.

분류에서Dev

gcc가 내 함수 템플릿에 대한 올바른 유형을 추론 할 수없는 이유는 무엇입니까?

분류에서Dev

C ++ 11 템플릿 함수 매개 변수 추론을 이해할 수 없습니다.

분류에서Dev

명시 적으로 주어진 템플릿 매개 변수를 "추론"할 수없는 이유

분류에서Dev

명시적인 템플릿 인수를 사용하여 템플릿 친구 함수를 호출 할 수없는 이유는 무엇입니까?

분류에서Dev

std :: ostream <<으로 전달할 때 조작자에 대한 템플릿 인수 추론 실패

분류에서Dev

std :: function은 템플릿 인스턴스에서 오버로드 된 유형을 추론 할 수 없습니다.

분류에서Dev

C ++ 템플릿 함수 유형 추론

분류에서Dev

템플릿 인수 (벡터, std :: function)를 추론 할 수 없습니다.

분류에서Dev

'T'에 대한 템플릿 인수를 추론 할 수 없습니다.

Related 관련 기사

  1. 1

    '가변 템플릿을 구문 분석 할 때'T '에 대한 템플릿 인수를 추론 할 수 없습니다.

  2. 2

    이 함수 템플릿을 전문화 할 때 템플릿 인수를 생략 할 수 없습니다.

  3. 3

    이 함수에 대한 템플릿 인수를 추론 할 수없는 이유는 무엇입니까?

  4. 4

    함수 템플릿에서 반환 유형의 템플릿 인수 추론

  5. 5

    g ++는 기능 맵 구현을위한 템플릿 유형을 추론 할 수 없습니다.

  6. 6

    C ++ : "<>"를 사용할 때만 추론되는 기본 템플릿 인수

  7. 7

    템플릿 클래스 멤버의 유형을 추론 할 수 없습니다.

  8. 8

    내 템플릿 기능을 인라인 할 수없는 이유

  9. 9

    컴파일러가 함수 인수에서 템플릿 값을 추론 할 수없는 이유는 무엇입니까?

  10. 10

    C ++는 추론 할 수없는 템플릿 유형 만 제공합니다.

  11. 11

    std :: forward가 스스로 템플릿 매개 변수를 추론 할 수없는 이유는 무엇입니까?

  12. 12

    이러한 템플릿 인수를 추론 할 수 있습니까?

  13. 13

    std :: async를 사용할 때 C ++ "템플릿 인수를 추론 할 수 없습니다"

  14. 14

    Eigen 2 라이브러리에서 linearRegression을 사용할 때 템플릿 인수 추론 / 대체가 실패했습니다.

  15. 15

    템플릿 함수 왜 "cin"을 추가 할 수 없습니까?

  16. 16

    컴파일러가 가변 템플릿에 대한 템플릿 인수를 추론 할 수 없습니다.

  17. 17

    템플릿 매개 변수를 추론 할 수 없습니다.

  18. 18

    함수 템플릿을 인스턴스화 할 때 템플릿 유형 인수를 생략하는 것이 합법적입니까?

  19. 19

    사용자 지정 템플릿에서 생성 할 때 반응 앱 템플릿 모듈을 찾을 수 없음

  20. 20

    템플릿 클래스 내부의 템플릿 반복기, clang은 템플릿 매개 변수를 추론 할 수 없습니다.

  21. 21

    gcc가 내 함수 템플릿에 대한 올바른 유형을 추론 할 수없는 이유는 무엇입니까?

  22. 22

    C ++ 11 템플릿 함수 매개 변수 추론을 이해할 수 없습니다.

  23. 23

    명시 적으로 주어진 템플릿 매개 변수를 "추론"할 수없는 이유

  24. 24

    명시적인 템플릿 인수를 사용하여 템플릿 친구 함수를 호출 할 수없는 이유는 무엇입니까?

  25. 25

    std :: ostream <<으로 전달할 때 조작자에 대한 템플릿 인수 추론 실패

  26. 26

    std :: function은 템플릿 인스턴스에서 오버로드 된 유형을 추론 할 수 없습니다.

  27. 27

    C ++ 템플릿 함수 유형 추론

  28. 28

    템플릿 인수 (벡터, std :: function)를 추론 할 수 없습니다.

  29. 29

    'T'에 대한 템플릿 인수를 추론 할 수 없습니다.

뜨겁다태그

보관