2010-06-16 28 views
7

Bu kod: Şablon sınıfı kendisini şablon şablonu parametresi olarak tanımlar mı?

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

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

A<B> B 'ın kapsamında A<B<T> > olarak yorumlanır beri herhalde derleme değil.

Peki, kapsamı içinde B şablon şablonu parametresi olarak nasıl geçersiniz?

+0

Aşağıdaki çalışmaları basit bir şekilde belirtmiyor musunuz? T aynı zamanda her tür basit ya da şablon tipi olabilir, çünkü ........... Kod _-------- şablon sınıfı { }; – Pardeep

+0

@Pardeep: Seni izlemedim. 'A'nın T bir şablon şablonu argümanıdır. Şablon sınıf A {} 'dan çok farklıdır. – uj2

+0

Niçin istersiniz? Bunun için hiç bir şey görmedim. – Puppy

cevap

12

Bu deneyin:

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

C++ Standart 14.6.1/2 şablon normal adı kullanmalıdır göre (diğer bir deyişle, kapatma alanı, enjekte edilen sınıf adı ad) .

+0

Teşekkürler. Bu yaptı. – uj2

+5

Güzel bir :) :) 'B' öncesi alanın gerekli olmasına dikkat etse de, :) –

İlgili konular