2017-12-13 4 views
4

두 템플릿 함수 Add()Subtract()을 포함하는 클래스 foo이 있습니다. 비 템플릿 클래스 내에서 여러 템플릿 함수

struct foo 
{ 
    template <typename U> 
    U* Add(); 
    template <typename U> 
    U* Subtract(); 
}; 

는 그들 모두 같은 템플릿 매개 변수 U을 사용하는 것이 맞습니까? 또한 템플릿 함수 선언 전에 항상 template <typename U>을 작성해야합니까?

+0

코드가 컴파일 되었습니까? 구성원 함수 템플릿이 선언 된 방식과 관련하여 비 멤버 함수 템플릿과 다른 점은 무엇이라고 생각하십니까? –

+3

@ DietmarKühl 컴파일 된 코드가 코드가 다음과 같이 충분하다는 증거가 아닙니다. 올바른 b. 의도 한대로 작동합니다. – SergeyA

+0

@SergeyA : 참. 그러나 예를 들어 완전히 다른 두 개의 컴파일러를 사용하고 두 코드가 모두 삼키는 지 확인하는 것은 상황이 정상임을 나타내는 것입니다. 또한, 그것은 여전히 ​​남아 있습니다 : 비 멤버 함수 템플릿과 비교할 때 상황이 다른 이유는 무엇입니까? –

답변

7

예. 매개 변수의 이름을 동일하게 지정할 수있는 동일한 방법으로 다른 함수에서 템플릿 매개 변수에 대해 동일한 이름을 사용할 수 있습니다. 다른 기능의 이름은 완전히 무관합니다.

그렇습니다. C++ 문법에 따라 키워드 template을 사용해야합니다.

관련 문제