Bütün sabah bu sorun üzerinde hiç bir sonuç olmadan yaşadım. Temel olarak, eğer parametre geçtiyse bir tür std :: vector olsun ya da olmasın, farklı uzmanlıklara dalmamı sağlayan basit bir meta programlama işine ihtiyacım var.Bir tür std :: vektörün uzmanlığı olup olmadığını nasıl öğrenebilirim?
Şablonlar için bir çeşit is_base_of.
Böyle bir şey var mı?
"Uzmanlık" ile miras anlamına mı geliyor? Veya bir tür takma ad (ör. "Typedef")? Veya belirli bir tür için özel bir uygulama (std :: vector 'gibi)? –
Sorunuz belirsiz: Eğer türün bir türü için std :: vector 'şablon uzmanlığı olup olmadığını belirlemek istiyorsanız, bunu yapamamanız gerekir (yine de temiz bir şekilde değil). Bir türün std :: vector'dan miras alınıp alınmadığını belirlemek istiyorsanız, bu durum açıkça karşılanır (std :: vektörünün sanal bir yıkıcıya sahip olmaması ve devralınması GEREKMEZ, yalnızca kapsüllenmiş olması gerekir). Bir class/typedef/template parametresinin bir std :: vector olup olmadığını belirlemek isterseniz, şablonlanmış bir özellik sınıfı kullanmalısınız (jrok'un cevabına bakın). –
utnapistim
@utnapistim: Bir türün genel olarak bir şablon uzmanlığı olup olmadığını kontrol etmek * zor değildir. –