답변

6

template<typename A, typename B> class MyClass<int, float> {... 차이하는 것이다. 실제로 형식 매개 변수 AB을 지정하면 템플릿에서 템플릿을 사용해야합니다.

두 번째 경우는 그냥 정상입니다. "자유로운"매개 변수없이 특수화한다고 가정 해보십시오.

중간 케이스는 다시 유효

template<typename A> class MyClass<A, float> {... 

수 : 여기 당신은 단지 2 템플릿 매개 변수를 고정한다.

부분 전문화의 아이디어는 다음과 같습니다. 일부 공식 매개 변수로 템플릿을 만들고이를 사용하여 초기 템플릿의 매개 변수에 제약 조건을 표현합니다. 부분 특수화의 매개 변수는 초기 템플리트 매개 변수와 동일 할 필요는 없습니다. 예 :

template<typename X, typename Y, typename Z> class MyClass<X*, Y(Z&)> {... 

은 귀하의 사례에 대한 유효한 부분 전문화입니다. 이는 "X, YZ의 임의 유형의 경우 의 템플릿 매개 변수가 및 Y(Z&)과 일치하는 경우이 전문을 사용하십시오"라고 읽을 수 있습니다. 컴파일러는 형식 패턴을 맞추기 위해 아주 똑똑해야합니다.

+0

여기에서 : http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=/com.ibm.xlcpp8a.doc/language/ref/partial_specialization.htm 나는'template 구조체 X {..' – uray

+0

@uray : 예,이 경우 템플릿 매개 변수를 사용하고 있습니다. – Vlad

+0

두 번째 인수'template class MyClass '에 대한 첫 번째 템플릿을 수정하려면 어떻게해야합니까? – uray