2013-04-26 2 views
3

내가 누군가 여기에 현재에 어떤 문제가 있는지 지적 해주십시오 ... 곧 폭발하고있어 손실 이 함수를 Container 매개 변수로 std :: vector로 호출하십시오. 나는 다음과 같은 오류를 얻을 : 여기표준 : : 벡터 ... 모든 지옥 나누기

main.cpp:24:34: error: no matching function for call to 'func()' 
main.cpp:24:34: note: candidate is: 
main.cpp:14:6: note: template<class T, template<class ...> class Container> void func() 
main.cpp:14:6: note: template argument deduction/substitution failed: 

그리고 내가 그것을 호출하려고 해요 방법은 다음과 같습니다

std::vector<int>* m(sort<int, std::vector<int>, Comparer>(m)); 

나는 그것이 작동하는 함수에서 템플릿 템플릿 매개 변수를 제거하면,하지만 그것으로 ... . MinGW와 함께 제공되는 최신 g ++ 컴파일러를 사용하고 있습니다. IDE는 많은 영향을 미치지 않는 NetBeans 7.3입니다. 컴파일러 인수는 다음과 같습니다

-std=c++11 -Wall -pedantic 

모든 도움을 주셔서 감사합니다, - 조이

+16

Nah ... 300 라인 이하의 오류는 실제로 템플릿으로 C++ 프로그램에서 "모두 지옥이 헐거워지는"것으로 간주 될 수 없습니다. :) – Mysticial

+1

오류가 명확하게'func' 함수에 관한 것이면 왜'sort' 함수를 보여주고 있습니까? –

+2

* MinGW *와 함께 제공되는 최신 g ++ 컴파일러는 컴파일러에 대한 끔찍한 잘못된 설명입니다. 오늘날에도 밍어 배포판에서 그 의미가 무엇인지 조회해야합니다. 몇 달 후 지금 질문을 보는 사람이 알아 내야 만하고 실제로 * 현재 *가 의미하는 바를 찾아야합니다. –

답변

10

템플릿이 아닌 템플릿에서 생성 된 특정 유형을 제공하기로되어 있습니다. 올바른 호출은 다음과 같습니다 자체가 const Container<TType>& 같이 Container에 대한 템플릿 인수를 제공

sort<int, std::vector, Comparer>(m) 

sort있다. 분명히 Containerstd::vector<int>으로 설정하는 것은 의미가 없습니다. 컴파일러에게 std::vector<int><int>

+0

아 ... 그래요. 그 점을 지적 해 주셔서 감사합니다. – Wrath