템플릿 매개 변수가 하나 뿐인 경우 C++ 템플릿이 자동으로 유형을 차감 할 수 있습니다. 예 :템플릿 이름이 두 개 이상인 템플릿 함수
template<typename T>
void f(const T &t)
{
cout << t << endl;
}
f(1);
입니다.
그러나
,template<typename T1, typename T2>
void f(const T1 &t1, const T2 &t2)
{
cout << t1 << t2 << endl;
}
f(1, 2);
위의 코드는 컴파일을 전달할 수 없습니다. 이것은 컴파일러의 능력 때문이거나 표준에 위배되는 것입니까?
컴파일러는 둘 이상의 템플릿 매개 변수를 추론 할 수 있어야합니다. 문제를 설명하기 위해 전체 컴파일 가능한 코드를 게시 할 수 있습니까? –
내가 말할 수있는 한이 코드에는 아무런 문제가 없습니다. http://www.ideone.com/AEVs4 –
매개 변수 목록에서'&'를 제거하면 어떻게됩니까? 나는 C++로 다소 녹슬었지만, 참조가 예상되는 곳에 정수 상수 ('1','2')를 전달할 수 있다는 것에 다소 놀랐다. – stakx