Verilen bu tanımlarÖzel üye türündeki bir şablonu ne zaman uzmanlaştırabilirsiniz?
template<class T> class foo {};
template<class T> class foo1 { static int i; };
class bar { class baz {}; };
Bu
template<>
class foo<bar::baz> {};
derler görmek şaşırttı
ama bu 'class bar::baz' is private
template<>
int foo1<bar::baz>::i = 42;
bu oluyor hatası ile başarısız ve orada türünü genel yapmaktan başka bir çözüm var mı?
ilginç olan *. Bu sınıfın bir değişkenini tanımlayan bir hata olduğunu anlıyorum. I.e., foo {}; 'Tamam (g ++), ancak sonra' foo f; 'değil. Yani, hemen hemen kullanılamaz bir tiptir ve hata nispeten geç olarak gelir (yani, sınıf tanımında değil). Hep [kamu tip takma] ekleyebilir gibi, kullanışsız değil –
@AmiTavory (http://coliru.stacked-crooked.com/a/22807544d8414c4e). Yine de ilginç bir soru. Neden uzmanlık üzerine bir erişim kontrolü var? :: i? –
@DanielFrey Anladığım kadarıyla bu soru, 'bar' kodunu değiştirmeden durumla ilgili. –