왜 다음 코드가 컴파일되지 않습니까?일치하는 함수 오류가 없습니다. [템플릿]
template <class T>
void foo_bar(T =5 , T = 10 , T = 15)
{
}
int main()
{
foo_bar();
}
이 오류는 no matching function for call to 'foo_bar()'
이됩니다. 오류 수정 방법
왜 다음 코드가 컴파일되지 않습니까?일치하는 함수 오류가 없습니다. [템플릿]
template <class T>
void foo_bar(T =5 , T = 10 , T = 15)
{
}
int main()
{
foo_bar();
}
이 오류는 no matching function for call to 'foo_bar()'
이됩니다. 오류 수정 방법
함수의 기본 인수 유형이 템플릿 추론에 도움이 될 수 없습니다. type-parameter
. 은 어떤 경우 에든 foo_bar()
과 같은 함수를 호출 할 때 추론 할 수 없으므로 오류가 발생합니다.
이렇게 시도하십시오 foo_bar<int>();
. 이 경우에는 T
의 유형이 명시 적으로 지정되어 있으므로 이러한. 제 점이 없습니다.
컴파일러는 형식을 알아낼 수 있어야하지만 절대 제공하지 않으면 해당 기본값을 사용하여 수행 할 작업을 알 수 없습니다. 기본적으로 함수 호출은 어떤 함수에 대해서도 일치하지 않을 수 있습니다. 그 이유는 함수를 정의 할 수있는 함수를주지 않았고 함수 정의가 도움이되지 않았기 때문입니다. 그러므로
int main()
{
foo_bar<int>();
return 0;
}
또는 공상에 치우치는 유형을 대괄호로 묶어서 유형을 추가해야합니다.
이 작동합니다. 고마워. – FooBar