Şablon sınıfını başka bir sınıfta uzmanlaştırmaya çalışıyorum ama derleyici izin vermiyor. Kod, Foo sınıfı dışında çalışır ama içeride değil ve Bla'nun Foo sınıfına özel olmasını istiyorum.Şablon alt sınıfı nasıl uzmanlaşır?
class Foo {
template<typename ... Ts> struct Bla;
template<> struct Bla<> { static constexpr int x = 1; };
};
error: explicit specialization in non-namespace scope 'class Foo'
Teşekkürler, bu tam olarak çözüm. –
@GoswinvonBrederlow burada 'public' kullanıldığını not ederek,' Bla :: x' görüntüleyebilirim. Ancak, bir "arkadaş" kullandığınızı veya üye bir işlevle görüntülediğinizi tahmin ediyorum, bu durumda tamam olmalısınız. – vsoftco
Bu beni düşünmemi sağlıyor. Bir sınıfın gizliliğini ihlal etmesine izin vermez mi? foo sınıfı {static constexpr int y = 1; public: template struct Bla; }; şablon <> struct Foo :: Bla <> {statik konsoleks int x = y; Foo :: y özeldir, ancak Bla'in uzmanı tarafından, Foo'nun herhangi bir kullanıcısı, Bla :: x aracılığıyla ona erişebilir. –