2013-03-02 2 views
1
template <int parameter> class MyClass 

위의 템플릿 전문성은 무엇입니까? 나는 그렇게 생각하지 않지만 확실하지는 않습니다. 템플릿이 함수로 인수를받을 수 있다는 것을 몰랐습니다. 인수가 저장되는 위치는 어디입니까?이것은 템플릿 전문 분야입니까?

+0

인수는 어디에 저장됩니까? RAM에 있음. 컴파일하는 동안. –

답변

3

템플릿 매개 변수는 반드시 숫자 일 필요는 없습니다. 숫자도 가능합니다. 예를 들어 std::array은 배열 크기로 size_t 유형의 매개 변수를 사용합니다.

귀하의 경우, 클래스 템플릿은 int 유형의 매개 변수를 사용합니다. 이는 완전히 정상입니다. 다음은 그러한 매개 변수를 사용하는 방법의 예입니다.

template <int param> struct MyClass { 
    int array[param]; // param is a compile-time constant. 
}; 
int main() { 
    MyClass<5> m; 
    m.array[3] = 8; // indexes 0..4 are allowed. 
    return 0; 
} 
1

그들의 인수는 유형 정보 내에 저장됩니다.

아니요, 템플릿 전문 분야가 아닙니다. 이것 좀 봐 :

template <int, int> class MyClass;   // <-- primary template 
template <int>  class MyClass<int, 4>; // <-- partial specialization 
template <>   class MyClass<5, 4>; // <-- specialization