2010-06-16 10 views
7

이 코드 : 자신을 템플릿 템플릿 매개 변수로 참조하는 템플릿 클래스?

template <template <typename> class T> 
class A 
{ 
}; 

template <typename T> 
class B 
{ 
    A<B> x; 
}; 

A<B>B의 범위 내에서 A<B<T> >으로 해석되기 때문에 나는 가정, 컴파일되지 않습니다.

따라서 범위 내에서 B을 템플릿 템플릿 매개 변수로 어떻게 전달합니까?

+0

단순히 다음 작업을 지정하지 않습니까? T는 또한 모든 종류의 단순 또는 템플릿 유형이 될 수 있기 때문에 ........... 코드 _-------- 템플릿 A 급 { }; – Pardeep

+0

@Pardeep : 나는 너를 아주 잘 따라하지 않았다. 'A'의 T는 템플릿 템플릿 인자입니다. ' 클래스 A {}'와는 아주 다른 내용입니다. – uj2

+0

왜 너는 왜 그러고 싶니? 나는 그것을 전혀 보지 못했다. – Puppy

답변

12

이 시도 :

template <typename T> 
class B 
{ 
    A<::B> x; // fully qualified name for B 
}; 

를 C++ 표준 14.6.1/2 템플릿의 일반 이름을 사용해야에 따라 (즉, 클로징 범위가 아닌 주입-클래스 이름에서 이름) .

+0

감사합니다. 그랬어. – uj2

+5

좋은 점 :':: B' 이전의 공간이 필요하다는 점에 주목할 가치가 있습니다 :) –

관련 문제