템플릿을 사용하는 클래스가 있습니다. 다음과 같은 내용입니다.템플릿 클래스 비 템플릿 메소드 인자
template <typename T>
class a
{
public:
a(T arg);
a<T> func(a arg); // This seems to work, but...
a<T> func(a<T> arg); // ...should I be doing this instead?
private:
T local;
};
func
의 두 가지 함수 템플릿에 유의하십시오. 두 가지 모두 컴파일됩니다 (물론 동시에는 아님). 그러나 어느 것이 정확합니까? 아니면 중요하지 않습니까? 내가 추측하고
a<float> b;
a<int> c;
a<int> d;
d = c+ b;
: 첫 번째, 나는이 class a
는 인수가 예를 들어 나는이 작업을 수행 할 수 있습니다 ...이 첫 번째 경우, 다른 종류의 T 대신 사용할 수 있습니다 ...이라고 지정한 컴파일되지 않기 때문에 대답은 "아니오"입니다!
두 번째 경우에는 인수의 템플릿 형식이 동일해야합니다.
위에서 설명한 내용으로 인해 컴파일러가 실제로 a<T> func(a arg);
을 a<T> func(a<T> arg);
으로 해석한다고 생각합니다. 나 맞아? 클래스 템플릿 a
에서