2011-10-15 4 views
1

멤버 템플릿, 템플릿 템플릿 멤버 함수를 호출 할 수 있습니까? 또는 어떻게 회원 템플릿이라고 부르는 지 알 수 있습니까? 어떻게 이해할 수 있습니까? 예를 들어회원 템플릿이란 무엇입니까?

: 경우 A에 대한

: 나는 그것의 멤버 함수 템플릿 멤버 함수를 만들면 내가 내가이 멤버 템플릿 부를 것이다, 클래스가?

사례 B : 템플릿 클래스가 있습니다. 템플릿 멤버 함수를 템플릿으로 만들면 구성원 템플릿이라고 부르나 템플릿 템플릿 함수라고 부를 수 있습니까?

+0

The C++ Programming Language와 같은 C++에 대한 책을 찾으십시오. 이와 같은 모든 질문은 쉽게 해결할 수 있습니다. – xis

+0

전화하는 방법은 무엇이 중요합니까? 다른 사람에게 설명해야 할 때, 당신이 의미하는 바를 보여주십시오. (그것은 내가 여기에 대해 무엇을하고 있는지 이해하는 데 도움이 될 것입니다.) – Dani

+0

나는 회원 템플리트를 다른 템플리트, 멤버 템플리트로 어떻게 여전히 호출 할 수 있습니까? 용어가 조금 혼란 스럽습니다. – user103214

답변

7

두 경우 모두 회원 템플릿이라고 부릅니다.

template<typename T> 
struct A { 
    // this is not a template 
    void f(); 

    // but this is a member template 
    template<typename T> void g(); 
}; 

회원이기 때문에 템플릿입니다. 템플릿입니다. 멤버 함수 f은 템플릿이 아니지만 클래스 템플릿의 멤버 함수입니다. C++에서는 불행하게도 그러한 용어에 대해 명확한 용어가 없으므로 특정 규칙이 표준에 공식화되어 템플릿에 적용되지만 클래스 템플릿의 멤버 함수에도 적용됩니다. 많은 규칙은 다음과 같이 즐거운 조합을 모두 모아야합니다.

function template 
member function of class template 
member function of nested class of a class template 
member function template 
... 

클래스 템플릿의 멤버 클래스에도 동일한 규칙이 적용됩니다. 클래스 템플릿 의 멤버 함수/클래스를 temploid 또는 이와 비슷한 것으로 호출하는 것이 제안되었습니다. 이 상황을 해결하기 위해 Work is under way.

+0

질문 하나, 두 경우 모두 멤버 함수 템플릿이라고도 부르는 것이 맞습니까? – user103214

+3

+1 temploid라는 용어를 설명합니다. –